برنامه نویسی

درک برچسب های خدمات در Kubernetes: راهنمای ساده برای تعویض Backends

Summarize this content to 400 words in Persian Lang
من همیشه بهترین راه برای درک مفاهیم Kubernetes را از طریق تشبیهات دنیای واقعی و تمرین عملی یافته‌ام. امروز، بیایید با بررسی یک مثال عملی به نحوه عملکرد برچسب های خدمات در Kubernetes بپردازیم. خواهیم دید که چگونه برچسب ها می توانند به ما کمک کنند که به راحتی پشتیبان یک سرویس NodePort را از یک پاد به پاد دیگر تغییر دهیم.

تشبیه تگ نام

به برچسب‌هایی در Kubernetes مانند برچسب‌های نام در یک کنفرانس فکر کنید. هر شرکت کننده برچسبی را می پوشد که نقش یا علاقه آنها را نشان می دهد، مانند “توسعه دهنده”، “طراح” یا “مدیر”. این برچسب ها به افراد کمک می کند تا به سرعت شرکت کنندگانی را با علایق مشابه شناسایی و گروه بندی کنند. در Kubernetes، برچسب‌ها به همین صورت عمل می‌کنند و به عنوان برچسب روی منابع مانند پادها و سرویس‌ها عمل می‌کنند تا به سازماندهی و مدیریت آسان‌تر آنها کمک کنند.

مرحله 1: یک NGINX Pod ایجاد کنید

ابتدا یک پاد با اجرای NGINX ایجاد کنید:

kubectl run nginx-pod –image=nginx

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

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

بررسی کنید که پاد در حال اجرا است:

kubectl get pods

NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 8s

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

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

مرحله 2: Pod را از طریق یک سرویس NodePort در معرض دید قرار دهید

حالا بیایید این غلاف را در معرض دید قرار دهیم تا بتوانیم از خارج از خوشه به آن دسترسی داشته باشیم.

kubectl expose pod nginx-pod –type=NodePort –port=80

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

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

جزئیات خدمات را بررسی کنید:

kubectl get services

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-pod NodePort 10.109.46.128 80:32303/TCP 6s

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

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

مرحله 3: یک برچسب انتخابگر به سرویس اضافه کنید

سرویس ما در حال حاضر برچسب انتخابگر یا “nametag” خاصی ندارد. اضافه کنیم role: developer به سرویس، بنابراین می داند که ترافیک را با این برچسب به پادها ارسال کند.

ابتدا برچسب را به غلاف اضافه کنید:

kubectl label pod nginx-pod role=developer

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

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

اکنون، سرویس را طوری ویرایش کنید که همان انتخابگر را شامل شود:

kubectl edit service nginx-pod

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

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

با این کار یک ویرایشگر متن باز می شود. بخش انتخابگر را پیدا کنید و آن را به صورت زیر تغییر دهید:

selector:
role: developer

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

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

مرحله 4: به سرویس NGINX دسترسی پیدا کنید

برای دسترسی به nginx pod از طریق NodePort، شماره NodePort را دریافت کنید:

kubectl get service nginx-pod

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

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

خروجی:

k get svc nginx-pod
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-pod NodePort 10.109.46.128 80:32303/TCP 3m37s

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

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

در این مثال، NodePort 32303 است. اکنون، سرویس را با استفاده از آدرس IP گره بچرخانید (NODE_IP را با IP واقعی گره خود جایگزین کنید، که می توانید با آن پیدا کنید. ip a | grep eth0):

curl NODE_IP:32303

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

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

باید صفحه پیش‌فرض NGINX HTML را ببینید.

Welcome to nginx!
[…]

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

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

مرحله 5: با استفاده از تصویر HTTPD یک Pod جدید ایجاد کنید

اکنون، بیایید با ایجاد یک پاد جدید با تصویر HTTPD، دومین شرکت کننده در کنفرانس خود را بیاوریم.

kubectl run httpd-pod –image=httpd

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

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

بر این اساس این غلاف را برچسب بزنید:

kubectl label pod httpd-pod role=manager

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

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

مرحله 6: انتخابگر سرویس را به روز کنید تا به Pod جدید اشاره کنید

دوباره سرویس را ویرایش کنید:

kubectl edit service nginx-pod

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

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

انتخابگر را به:

selector:
role: manager

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

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

مرحله 7: به سرویس به روز شده دسترسی پیدا کنید

دوباره سرویس را پیچ کنید:

curl NODE_IP:32303

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

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

بسته بندی

به سادگی با تغییر انتخابگر برچسب در سرویس خود، ترافیک را از یک پاد به پاد دیگر بدون تغییر نقطه پایانی یا پورت سرویس هدایت کردیم. این قدرت برچسب‌ها در Kubernetes است—آنها به شما امکان می‌دهند ترافیک را بین پادهای مختلف مدیریت و مسیریابی کنید.

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

تشبیه تگ نام

به برچسب‌هایی در Kubernetes مانند برچسب‌های نام در یک کنفرانس فکر کنید. هر شرکت کننده برچسبی را می پوشد که نقش یا علاقه آنها را نشان می دهد، مانند “توسعه دهنده”، “طراح” یا “مدیر”. این برچسب ها به افراد کمک می کند تا به سرعت شرکت کنندگانی را با علایق مشابه شناسایی و گروه بندی کنند. در Kubernetes، برچسب‌ها به همین صورت عمل می‌کنند و به عنوان برچسب روی منابع مانند پادها و سرویس‌ها عمل می‌کنند تا به سازماندهی و مدیریت آسان‌تر آنها کمک کنند.

مرحله 1: یک NGINX Pod ایجاد کنید

ابتدا یک پاد با اجرای NGINX ایجاد کنید:

kubectl run nginx-pod --image=nginx
وارد حالت تمام صفحه شوید

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

بررسی کنید که پاد در حال اجرا است:

kubectl get pods

NAME                               READY   STATUS    RESTARTS        AGE
nginx-pod                          1/1     Running   0               8s
وارد حالت تمام صفحه شوید

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

مرحله 2: Pod را از طریق یک سرویس NodePort در معرض دید قرار دهید

حالا بیایید این غلاف را در معرض دید قرار دهیم تا بتوانیم از خارج از خوشه به آن دسترسی داشته باشیم.

kubectl expose pod nginx-pod --type=NodePort --port=80
وارد حالت تمام صفحه شوید

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

جزئیات خدمات را بررسی کنید:

kubectl get services

NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
nginx-pod         NodePort    10.109.46.128           80:32303/TCP   6s
وارد حالت تمام صفحه شوید

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

مرحله 3: یک برچسب انتخابگر به سرویس اضافه کنید

سرویس ما در حال حاضر برچسب انتخابگر یا “nametag” خاصی ندارد. اضافه کنیم role: developer به سرویس، بنابراین می داند که ترافیک را با این برچسب به پادها ارسال کند.

ابتدا برچسب را به غلاف اضافه کنید:

kubectl label pod nginx-pod role=developer
وارد حالت تمام صفحه شوید

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

اکنون، سرویس را طوری ویرایش کنید که همان انتخابگر را شامل شود:

kubectl edit service nginx-pod
وارد حالت تمام صفحه شوید

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

با این کار یک ویرایشگر متن باز می شود. بخش انتخابگر را پیدا کنید و آن را به صورت زیر تغییر دهید:

  selector:
    role: developer
وارد حالت تمام صفحه شوید

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

مرحله 4: به سرویس NGINX دسترسی پیدا کنید

برای دسترسی به nginx pod از طریق NodePort، شماره NodePort را دریافت کنید:

kubectl get service nginx-pod
وارد حالت تمام صفحه شوید

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

خروجی:

k get svc nginx-pod
NAME        TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
nginx-pod   NodePort   10.109.46.128           80:32303/TCP   3m37s
وارد حالت تمام صفحه شوید

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

در این مثال، NodePort 32303 است. اکنون، سرویس را با استفاده از آدرس IP گره بچرخانید (NODE_IP را با IP واقعی گره خود جایگزین کنید، که می توانید با آن پیدا کنید. ip a | grep eth0):

curl NODE_IP:32303
وارد حالت تمام صفحه شوید

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

باید صفحه پیش‌فرض NGINX HTML را ببینید.




Welcome to nginx!
[...]
وارد حالت تمام صفحه شوید

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

مرحله 5: با استفاده از تصویر HTTPD یک Pod جدید ایجاد کنید

اکنون، بیایید با ایجاد یک پاد جدید با تصویر HTTPD، دومین شرکت کننده در کنفرانس خود را بیاوریم.

kubectl run httpd-pod --image=httpd
وارد حالت تمام صفحه شوید

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

بر این اساس این غلاف را برچسب بزنید:

kubectl label pod httpd-pod role=manager
وارد حالت تمام صفحه شوید

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

مرحله 6: انتخابگر سرویس را به روز کنید تا به Pod جدید اشاره کنید

دوباره سرویس را ویرایش کنید:

kubectl edit service nginx-pod
وارد حالت تمام صفحه شوید

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

انتخابگر را به:

  selector:
    role: manager
وارد حالت تمام صفحه شوید

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

مرحله 7: به سرویس به روز شده دسترسی پیدا کنید

دوباره سرویس را پیچ کنید:

curl NODE_IP:32303

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

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

بسته بندی

به سادگی با تغییر انتخابگر برچسب در سرویس خود، ترافیک را از یک پاد به پاد دیگر بدون تغییر نقطه پایانی یا پورت سرویس هدایت کردیم. این قدرت برچسب‌ها در Kubernetes است—آنها به شما امکان می‌دهند ترافیک را بین پادهای مختلف مدیریت و مسیریابی کنید.

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

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

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

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