برنامه نویسی

خدمات Kubernetes: درک NodePort و ClusterIP

به مجموعه وبلاگ من در CK 2024 خوش آمدید! این نهمین پست از این سری است که در آن به خدمات مختلف Kubernetes مانند ClusterIP، NodePort، ExternalName و LoadBalancer می پردازیم. در این پست، نحوه عملکرد این سرویس ها و اهمیت آنها در محیط Kubernetes را بررسی خواهیم کرد.

خلاصه از پست های قبلی

در آخرین پست خود، ReplicaSets، ReplicationControllers و Deployments را مورد بحث قرار دادیم. ما یاد گرفتیم که چگونه یک استقرار با پادهای متعدد در حال اجرا یک برنامه فرانت اند Nginx ایجاد کنیم. با این حال، ما این استقرار را در معرض کاربران خارجی قرار ندادیم، این همان چیزی است که امروز با استفاده از خدمات Kubernetes روی آن تمرکز خواهیم کرد.

معرفی خدمات Kubernetes

سرویس های Kubernetes ارتباط بین اجزای مختلف را در داخل و خارج از یک خوشه Kubernetes امکان پذیر می کند. آنها راهی برای نمایش برنامه‌های در حال اجرا بر روی مجموعه‌ای از پادها، اطمینان از پایداری آدرس‌های IP و بارگیری ترافیک تعادل در چندین پاد فراهم می‌کنند. انواع اصلی خدمات در Kubernetes عبارتند از:

  1. ClusterIP
  2. NodePort
  3. نام خارجی
  4. متعادل کننده بار

توضیحات تصویر

چرا از خدمات Kubernetes استفاده کنیم؟

سرویس‌ها در Kubernetes باعث می‌شوند که مؤلفه‌های برنامه شما به‌طور ضعیفی جفت شوند و به آن‌ها اجازه می‌دهند به طور مؤثر با یکدیگر ارتباط برقرار کنند و برای کاربران خارجی قابل دسترسی باشند. آنها اطمینان حاصل می کنند که غلاف های شما، که می توانند به صورت پویا ایجاد و از بین بروند، همیشه در دسترس هستند.

سرویس NodePort

یک سرویس NodePort برنامه شما را در یک پورت ثابت در آدرس IP هر گره نشان می دهد. این سرویس به کاربران خارجی اجازه می دهد تا با درخواست آدرس IP گره و NodePort به برنامه شما دسترسی داشته باشند.

NodePort چگونه کار می کند

بیایید بگوییم که یک برنامه front-end داریم که روی یک پاد اجرا می شود. ما می خواهیم این برنامه را به صورت خارجی در معرض دید قرار دهیم. ما این کار را با ایجاد یک سرویس NodePort انجام می دهیم:

  • NodePort: یک پورت استاتیک در IP هر گره (مثلاً 30001).
  • بندر: پورتی که توسط سرویس درون خوشه در معرض دید قرار می گیرد (مثلاً 80).
  • TargetPort: پورتی که برنامه در داخل پاد روی آن اجرا می شود (مثلاً 80).

جریان ترافیک به شرح زیر خواهد بود:
کاربر خارجی -> Node IP -> Service Port -> TargetPort (پاد برنامه)

NodePort YAML مثال

apiVersion: v1
kind: Service
metadata:
  name: nodeport-service
  labels:
    env: demo
spec:
  type: NodePort
  selector:
    env: demo
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30001
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد سرویس با استفاده از:

kubectl apply -f nodeport.yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد سرویس را تأیید کنید:

kubectl get svc
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

شما باید سرویس را با پورت های ClusterIP، NodePort و هدف آن مشاهده کنید.

سرویس ClusterIP

یک سرویس ClusterIP نوع سرویس پیش فرض در Kubernetes است. این یک آدرس IP داخلی پایدار را فراهم می کند که فقط در داخل خوشه قابل دسترسی است. این سرویس برای ارتباط داخلی بین پادهای مختلف استفاده می شود.

ClusterIP چگونه کار می کند

ClusterIP به برنامه جلویی شما اجازه می دهد تا با سرویس ها یا پایگاه های داده پشتیبان بدون قرار گرفتن در معرض شبکه های خارجی ارتباط برقرار کند. هنگامی که یک سرویس ClusterIP ایجاد می کنید، Kubernetes یک آدرس IP داخلی به آن اختصاص می دهد و قوانین مسیریابی را برای هدایت ترافیک به پادهای مناسب تنظیم می کند.

نمونه ClusterIP YAML

apiVersion: v1
kind: Service
metadata:
  name: clusterip-service
  labels:
    app: my-app
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد سرویس با استفاده از:

kubectl apply -f clusterip.yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد سرویس را تأیید کنید:

kubectl get svc
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

باید این سرویس را با ClusterIP و پورت های آن مشاهده کنید.

نتیجه

درک و پیکربندی صحیح سرویس ها برای مدیریت ارتباطات در یک خوشه Kubernetes بسیار مهم است. خدمات NodePort و ClusterIP اهداف متفاوتی را دنبال می کنند، اما هر دو برای ساخت برنامه های کاربردی مقیاس پذیر و قوی ضروری هستند.

در پست بعدی، بیشتر به دستورات و فضاهای نام چند کانتینر خواهیم پرداخت. گوش به زنگ باشید!

برای مراجعه بیشتر، ویدیوی دقیق یوتیوب را اینجا ببینید:
https://www.youtube.com/watch?v=tHAQWLKMTB0

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا