درک برچسب های خدمات در 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 است—آنها به شما امکان میدهند ترافیک را بین پادهای مختلف مدیریت و مسیریابی کنید.