برنامه نویسی

دوره کامل CKA 2024: روز 9/40 فضای نام Kubernetes توضیح داده شد

Summarize this content to 400 words in Persian Lang

توجه به خواننده

در این پست، من در حال آزمایش یک قالب مختصرتر هستم. تکمیل پست‌های بسیار دقیق 2 تا 3 روز طول می‌کشد، بنابراین در این پست، قبل از اینکه مستقیماً به تمرین‌ها برسم، روی توصیف فضاهای نام Kubernetes و اجزای آنها تمرکز خواهم کرد.

فضاهای نام Kubernetes

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

فضاهای نام زمانی ایده آل هستند که به جداسازی منطقی نیاز دارید اما می خواهید از پیچیدگی خوشه های متعدد اجتناب کنید.

دو فضای نام ایجاد کنید و نام آنها را ns1 و ns2 بگذارید

kubectl create namespace ns1

kubectl create namespace ns2

یک استقرار با یک ماکت در هر یک از این فضاهای نام با تصویر به ترتیب nginx و نام‌های deploy-ns1 و deploy-ns2 ایجاد کنید.

استقرار برای ns1 – این پیکربندی را به عنوان ذخیره کنید ns1-deployment.yml:

apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-ns1
namespace: ns1
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: deploy-ns1
template:
metadata:
labels:
app: deploy-ns1
spec:
containers:
– name: nginx
image: nginx:1.23.4-alpine
ports:
– containerPort: 80

استقرار برای ns2 – این پیکربندی را به عنوان ذخیره کنید ns2-deployment.yml:

apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-ns2
namespace: ns2
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: deploy-ns2
template:
metadata:
labels:
app: deploy-ns2
spec:
containers:
– name: nginx
image: nginx:1.23.4-alpine
ports:
– containerPort: 80

هر پیکربندی YAML را برای ایجاد استقرارها اعمال کنید

kubectl apply -f ns1-deployment.yml

kubectl apply -f ns2-deployment.yml

آدرس IP هر یک از پادها را دریافت کنید

فضای نام ns1

kubectl get pods -o wide -n ns1

خروجی نمونه:

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deploy-ns1-68b96c55c4-db4b9 1/1 Running 0 13m 10.244.2.8 cka-cluster-worker <none> <none>

فضای نام ns2

kubectl get pods -o wide -n ns2

خروجی نمونه:

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deploy-ns2-7c6646cf97-76xcz 1/1 Running 0 14m 10.244.1.10 cka-cluster-worker2 <none> <none>

Exec به غلاف deploy-ns1 و سعی کنید آدرس IP پاد در حال اجرا را بچرخانید deploy-ns2

kubectl exec -it deploy-ns1-68b96c55c4-db4b9 -n ns1 — curl 10.244.1.10

پس از اجرای موفقیت آمیز، باید یک پاسخ HTML مانند زیر را مشاهده کنید:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p>
<p>For online documentation and support, please refer to <a href=”http://nginx.org/”>nginx.org</a>.<br/>
Commercial support is available at <a href=”http://nginx.com/”>nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

این تایید می کند که deploy-ns1 غلاف می تواند به deploy-ns2 pod، و سرور nginx آماده و در حال اجرا است.

هر دو استقرار را از 1 به 3 تکرار کنید

توجه: برای اهداف کنترل منبع، مقیاس فایل YAML را انتخاب کردم.

را به روز کنید replicas فیلد در هر فایل YAML استقرار:

ns1-deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-ns1
namespace: ns1
labels:
app: nginx
spec:
replicas: 3 # Updated to 3 replicas
selector:
matchLabels:
app: deploy-ns1
template:
metadata:
labels:
app: deploy-ns1
spec:
containers:
– name: nginx
image: nginx:1.23.4-alpine
ports:
– containerPort: 80

ns2-deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-ns2
namespace: ns2
labels:
app: nginx
spec:
replicas: 3 # Updated to 3 replicas
selector:
matchLabels:
app: deploy-ns2
template:
metadata:
labels:
app: deploy-ns2
spec:
containers:
– name: nginx
image: nginx:1.23.4-alpine
ports:
– containerPort: 80

پیکربندی های به روز شده را برای مقیاس بندی استقرارها اعمال کنید

kubectl apply -f ns1-deployment.yml
kubectl apply -f ns2-deployment.yml

این هر دو را مقیاس خواهد کرد deploy-ns1 و deploy-ns2 به 3 کپی از هر کدام، با استفاده از فایل های به روز شده YAML برای نگه داشتن تغییرات تحت کنترل نسخه.

مرحله 2: ایجاد سرویس برای svc-ns1

apiVersion: v1
kind: Service
metadata:
name: svc-ns1
namespace: ns1
spec:
selector:
app: deploy-ns1
ports:
– protocol: TCP
port: 80
targetPort: 80
type: ClusterIP

مرحله 3: ایجاد سرویس برای svc-ns2

apiVersion: v1
kind: Service
metadata:
name: svc-ns2
namespace: ns2
spec:
selector:
app: deploy-ns2
ports:
– protocol: TCP
port: 80
targetPort: 80
type: ClusterIP

مرحله 4: تعاریف سرویس را اعمال کنید

هنگامی که هر دو فایل YAML را ایجاد کردید (مثلاً svc-ns1.yml و svc-ns2.yml، می توانید با استفاده از دستورات زیر آنها را اعمال کنید:

kubectl apply -f svc-ns1.yml
kubectl apply -f svc-ns2.yml

مرحله 5: بررسی خدمات

پس از درخواست، می‌توانید با اجرای زیر تأیید کنید که سرویس‌های شما آماده و در حال اجرا هستند:

kubectl get services -n ns1
kubectl get services -n ns2

این باید به شما نشان دهد svc-ns1 و svc-ns2 خدمات، همراه با IP های خوشه ای و پورت های آنها.

دو سرویس ایجاد کنید تا هر دو استقرار خود را در معرض دید قرار دهید و آنها را نام ببرید svc-ns1 و svc-ns2

ns1-service.yml

apiVersion: v1
kind: Service
metadata:
name: svc-ns1
namespace: ns1
spec:
selector:
app: deploy-ns1
ports:
– protocol: TCP
port: 80
targetPort: 80
type: ClusterIP

ns2-service.yml

apiVersion: v1
kind: Service
metadata:
name: svc-ns2
namespace: ns2
spec:
selector:
app: deploy-ns2
ports:
– protocol: TCP
port: 80
targetPort: 80
type: ClusterIP

Exec در هر پاد و سعی کنید آدرس IP سرویس در حال اجرا در فضای نام دیگر را بچرخانید.

kubectl exec -it <pod-name> -n ns1 — curl <ip-address>

این حلقه باید کار کند (این کار را انجام داد).

اکنون به جای IP نام سرویس را فرفری کنید. متوجه خواهید شد که در حال دریافت خطا هستید و نمی توانید هاست را حل کنید.
kubectl exec -it deploy-ns1-68b96c55c4-db4b9
-n ns1 — حلقه کردن

اکنون به جای IP نام سرویس را فرفری کنید

متوجه خواهید شد که در حال دریافت خطا هستید و نمی توانید هاست را حل کنید.

kubectl exec -it deploy-ns1-68b96c55c4-db4b9 -n ns1 — curl svc-ns2

حالا از FQDN سرویس استفاده کنید و دوباره سعی کنید حلقه بزنید

این باید کار کند:

kubectl exec -it deploy-ns1-68b96c55c4-db4b9 -n ns1 — curl svc-ns2.ns2

در پایان هر دو فضای نام را حذف کنید

این باید خدمات و استقرارهای زیر آنها را حذف کند:

kubectl delete namespace ns1
kubectl delete namespace ns2

خلاصه ای از یادگیری در مورد فضاهای نام و خدمات Kubernetes

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

درک فضای نام Kubernetes

تعریف: فضاهای نام مکانیزمی را برای تقسیم منابع خوشه بین چندین کاربر یا برنامه ارائه می کنند که امکان جداسازی منطقی را بدون پیچیدگی مدیریت چند خوشه فراهم می کند.

موارد استفاده: آنها به ویژه در سناریوهایی مفید هستند که در آن محیط‌های مختلف (توسعه، مرحله‌بندی، و تولید) در یک خوشه همزیستی دارند و تیم‌ها را قادر می‌سازد تا زیرساخت‌ها را به اشتراک بگذارند و منابع را جدا کنند.

ایجاد فضای نام

ما دو فضای نام ایجاد کردیم، ns1 و ns2، با استفاده از دستورات زیر:

kubectl create namespace ns1
kubectl create namespace ns2

استقرار در فضاهای نام

ما یک کپی از Nginx را در هر فضای نام مستقر کردیم:

استقرار در ns1: پیکربندی به عنوان ذخیره شده است ns1-deployment.yml.

استقرار در ns2: پیکربندی به عنوان ذخیره شده است ns2-deployment.yml.

ما استفاده کردیم kubectl apply دستور ایجاد این استقرارها.

گسترش مقیاس

ما هر دو استقرار را از 1 به 3 کپی با استفاده از فایل‌های پیکربندی YAML برای کنترل منبع تغییر دادیم و اطمینان حاصل کردیم که تغییرات ما ردیابی شده است.

افشای استقرارها با خدمات

ما دو سرویس برای افشای استقرار خود ایجاد کردیم:

خدمات برای ns1: پیکربندی به عنوان ذخیره شده است ns1-service.yml.

خدمات برای ns2: پیکربندی به عنوان ذخیره شده است ns2-service.yml.

این مرحله دسترسی خارجی به استقرارهای Nginx ما را فعال کرد.

ارتباط Pod-to-Pod

ما دستوراتی را اجرا کردیم تا آدرس‌های IP سرویس‌ها را از داخل پادها بچرخانیم:

kubectl exec -it <pod-name> -n ns1 — curl <ip-address>

سپس ما سعی کردیم نام سرویس را مستقیماً بچرخانیم که منجر به خطای وضوح شد و اهمیت DNS را در Kubernetes نشان داد.

استفاده از نام دامنه کاملاً واجد شرایط (FQDN).

با استفاده از FQDN سرویس، ما با موفقیت به خدمات در فضای نام دسترسی پیدا کردیم:

kubectl exec -it deploy-ns1-68b96c55c4-db4b9 -n ns1 — curl svc-ns2.ns2

پاکسازی

برای حفظ یک فضای کاری مرتب، هر دو فضای نام را حذف کردیم که سرویس‌ها و توسعه‌های مرتبط را نیز حذف کردیم:

kubectl delete namespace ns1
kubectl delete namespace ns2

خوراکی های کلیدی

فضاهای نام برای سازماندهی منابع و مدیریت دسترسی در یک خوشه Kubernetes ضروری هستند.

استقرار و خدمات دست در دست هم برای ارائه برنامه های کاربردی مقیاس پذیر و در معرض دید قرار دادن آنها برای دسترسی خارجی کار کنید.

FQDN برای ارتباط بین فضای نامی بسیار مهم است و بر اهمیت DNS در Kubernetes تاکید می کند.
حفظ پاکیزگی در خوشه ما با حذف فضاهای نام و منابع غیر ضروری برای مدیریت کارآمد بسیار مهم است.

این کاوش جامع نه تنها درک ما از فضاهای نام، استقرار و سرویس‌های Kubernetes را تقویت کرد، بلکه تجربه عملی را با دستورات و پیکربندی‌های مربوط به مدیریت یک خوشه Kubernetes ارائه کرد.

فهرست مطالب

توجه به خواننده

در این پست، من در حال آزمایش یک قالب مختصرتر هستم. تکمیل پست‌های بسیار دقیق 2 تا 3 روز طول می‌کشد، بنابراین در این پست، قبل از اینکه مستقیماً به تمرین‌ها برسم، روی توصیف فضاهای نام Kubernetes و اجزای آنها تمرکز خواهم کرد.

فضاهای نام Kubernetes

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

فضاهای نام زمانی ایده آل هستند که به جداسازی منطقی نیاز دارید اما می خواهید از پیچیدگی خوشه های متعدد اجتناب کنید.

دو فضای نام ایجاد کنید و نام آنها را ns1 و ns2 بگذارید

kubectl create namespace ns1

kubectl create namespace ns2

یک استقرار با یک ماکت در هر یک از این فضاهای نام با تصویر به ترتیب nginx و نام‌های deploy-ns1 و deploy-ns2 ایجاد کنید.

استقرار برای ns1 – این پیکربندی را به عنوان ذخیره کنید ns1-deployment.yml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-ns1
  namespace: ns1
  labels:
    app: nginx
spec:
  replicas: 1  
  selector:
    matchLabels:
      app: deploy-ns1
  template:
    metadata:
      labels:
        app: deploy-ns1
    spec:
      containers:
      - name: nginx
        image: nginx:1.23.4-alpine
        ports:
        - containerPort: 80

استقرار برای ns2 – این پیکربندی را به عنوان ذخیره کنید ns2-deployment.yml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-ns2
  namespace: ns2
  labels:
    app: nginx
spec:
  replicas: 1  
  selector:
    matchLabels:
      app: deploy-ns2
  template:
    metadata:
      labels:
        app: deploy-ns2
    spec:
      containers:
      - name: nginx
        image: nginx:1.23.4-alpine
        ports:
        - containerPort: 80

هر پیکربندی YAML را برای ایجاد استقرارها اعمال کنید

kubectl apply -f ns1-deployment.yml

kubectl apply -f ns2-deployment.yml

آدرس IP هر یک از پادها را دریافت کنید

  1. فضای نام ns1
   kubectl get pods -o wide -n ns1

خروجی نمونه:

   NAME                          READY   STATUS    RESTARTS   AGE   IP           NODE                 NOMINATED NODE   READINESS GATES
   deploy-ns1-68b96c55c4-db4b9   1/1     Running   0          13m   10.244.2.8   cka-cluster-worker   <none>           <none>
  1. فضای نام ns2
   kubectl get pods -o wide -n ns2

خروجی نمونه:

   NAME                          READY   STATUS    RESTARTS   AGE   IP            NODE                  NOMINATED NODE   READINESS GATES
   deploy-ns2-7c6646cf97-76xcz   1/1     Running   0          14m   10.244.1.10   cka-cluster-worker2   <none>           <none>

Exec به غلاف deploy-ns1 و سعی کنید آدرس IP پاد در حال اجرا را بچرخانید deploy-ns2

kubectl exec -it deploy-ns1-68b96c55c4-db4b9 -n ns1 -- curl 10.244.1.10

پس از اجرای موفقیت آمیز، باید یک پاسخ HTML مانند زیر را مشاهده کنید:

<!DOCTYPE html>
<html>
<head>
    <title>Welcome to nginx!</title>
    <style>
        html { color-scheme: light dark; }
        body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; }
    </style>
</head>
<body>
    <h1>Welcome to nginx!</h1>
    <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p>
    <p>For online documentation and support, please refer to <a href="http://nginx.org/">nginx.org</a>.<br/>
    Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p>
    <p><em>Thank you for using nginx.</em></p>
</body>
</html>

این تایید می کند که deploy-ns1 غلاف می تواند به deploy-ns2 pod، و سرور nginx آماده و در حال اجرا است.

هر دو استقرار را از 1 به 3 تکرار کنید

توجه: برای اهداف کنترل منبع، مقیاس فایل YAML را انتخاب کردم.

را به روز کنید replicas فیلد در هر فایل YAML استقرار:

  1. ns1-deployment.yml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deploy-ns1
      namespace: ns1
      labels:
        app: nginx
    spec:
      replicas: 3  # Updated to 3 replicas
      selector:
        matchLabels:
          app: deploy-ns1
      template:
        metadata:
          labels:
            app: deploy-ns1
        spec:
          containers:
          - name: nginx
            image: nginx:1.23.4-alpine
            ports:
            - containerPort: 80
    
  2. ns2-deployment.yml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deploy-ns2
      namespace: ns2
      labels:
        app: nginx
    spec:
      replicas: 3  # Updated to 3 replicas
      selector:
        matchLabels:
          app: deploy-ns2
      template:
        metadata:
          labels:
            app: deploy-ns2
        spec:
          containers:
          - name: nginx
            image: nginx:1.23.4-alpine
            ports:
            - containerPort: 80
    

پیکربندی های به روز شده را برای مقیاس بندی استقرارها اعمال کنید

kubectl apply -f ns1-deployment.yml
kubectl apply -f ns2-deployment.yml

این هر دو را مقیاس خواهد کرد deploy-ns1 و deploy-ns2 به 3 کپی از هر کدام، با استفاده از فایل های به روز شده YAML برای نگه داشتن تغییرات تحت کنترل نسخه.

مرحله 2: ایجاد سرویس برای svc-ns1

apiVersion: v1
kind: Service
metadata:
  name: svc-ns1
  namespace: ns1  
spec:
  selector:
    app: deploy-ns1  
  ports:
    - protocol: TCP
      port: 80         
      targetPort: 80   
  type: ClusterIP

مرحله 3: ایجاد سرویس برای svc-ns2

apiVersion: v1
kind: Service
metadata:
  name: svc-ns2
  namespace: ns2  
spec:
  selector:
    app: deploy-ns2  
  ports:
    - protocol: TCP
      port: 80         
      targetPort: 80   
  type: ClusterIP

مرحله 4: تعاریف سرویس را اعمال کنید

هنگامی که هر دو فایل YAML را ایجاد کردید (مثلاً svc-ns1.yml و svc-ns2.yml، می توانید با استفاده از دستورات زیر آنها را اعمال کنید:

kubectl apply -f svc-ns1.yml
kubectl apply -f svc-ns2.yml

مرحله 5: بررسی خدمات

پس از درخواست، می‌توانید با اجرای زیر تأیید کنید که سرویس‌های شما آماده و در حال اجرا هستند:

kubectl get services -n ns1
kubectl get services -n ns2

این باید به شما نشان دهد svc-ns1 و svc-ns2 خدمات، همراه با IP های خوشه ای و پورت های آنها.

دو سرویس ایجاد کنید تا هر دو استقرار خود را در معرض دید قرار دهید و آنها را نام ببرید svc-ns1 و svc-ns2

ns1-service.yml

apiVersion: v1
kind: Service
metadata:
  name: svc-ns1
  namespace: ns1  
spec:
  selector:
    app: deploy-ns1  
  ports:
    - protocol: TCP
      port: 80         
      targetPort: 80   
  type: ClusterIP

ns2-service.yml

apiVersion: v1
kind: Service
metadata:
  name: svc-ns2
  namespace: ns2  
spec:
  selector:
    app: deploy-ns2  
  ports:
    - protocol: TCP
      port: 80         
      targetPort: 80   
  type: ClusterIP

Exec در هر پاد و سعی کنید آدرس IP سرویس در حال اجرا در فضای نام دیگر را بچرخانید.

kubectl exec -it <pod-name> -n ns1 -- curl <ip-address>

این حلقه باید کار کند (این کار را انجام داد).

اکنون به جای IP نام سرویس را فرفری کنید. متوجه خواهید شد که در حال دریافت خطا هستید و نمی توانید هاست را حل کنید.
kubectl exec -it deploy-ns1-68b96c55c4-db4b9
-n ns1 — حلقه کردن

اکنون به جای IP نام سرویس را فرفری کنید

متوجه خواهید شد که در حال دریافت خطا هستید و نمی توانید هاست را حل کنید.

kubectl exec -it deploy-ns1-68b96c55c4-db4b9 -n ns1 -- curl svc-ns2

حالا از FQDN سرویس استفاده کنید و دوباره سعی کنید حلقه بزنید

این باید کار کند:

kubectl exec -it deploy-ns1-68b96c55c4-db4b9 -n ns1 -- curl svc-ns2.ns2

در پایان هر دو فضای نام را حذف کنید

این باید خدمات و استقرارهای زیر آنها را حذف کند:

kubectl delete namespace ns1
kubectl delete namespace ns2

خلاصه ای از یادگیری در مورد فضاهای نام و خدمات Kubernetes

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

درک فضای نام Kubernetes

  • تعریف: فضاهای نام مکانیزمی را برای تقسیم منابع خوشه بین چندین کاربر یا برنامه ارائه می کنند که امکان جداسازی منطقی را بدون پیچیدگی مدیریت چند خوشه فراهم می کند.
  • موارد استفاده: آنها به ویژه در سناریوهایی مفید هستند که در آن محیط‌های مختلف (توسعه، مرحله‌بندی، و تولید) در یک خوشه همزیستی دارند و تیم‌ها را قادر می‌سازد تا زیرساخت‌ها را به اشتراک بگذارند و منابع را جدا کنند.

ایجاد فضای نام

  • ما دو فضای نام ایجاد کردیم، ns1 و ns2، با استفاده از دستورات زیر:
  kubectl create namespace ns1
  kubectl create namespace ns2

استقرار در فضاهای نام

  • ما یک کپی از Nginx را در هر فضای نام مستقر کردیم:
    • استقرار در ns1: پیکربندی به عنوان ذخیره شده است ns1-deployment.yml.
    • استقرار در ns2: پیکربندی به عنوان ذخیره شده است ns2-deployment.yml.

ما استفاده کردیم kubectl apply دستور ایجاد این استقرارها.

گسترش مقیاس

  • ما هر دو استقرار را از 1 به 3 کپی با استفاده از فایل‌های پیکربندی YAML برای کنترل منبع تغییر دادیم و اطمینان حاصل کردیم که تغییرات ما ردیابی شده است.

افشای استقرارها با خدمات

  • ما دو سرویس برای افشای استقرار خود ایجاد کردیم:
    • خدمات برای ns1: پیکربندی به عنوان ذخیره شده است ns1-service.yml.
    • خدمات برای ns2: پیکربندی به عنوان ذخیره شده است ns2-service.yml.

این مرحله دسترسی خارجی به استقرارهای Nginx ما را فعال کرد.

ارتباط Pod-to-Pod

  • ما دستوراتی را اجرا کردیم تا آدرس‌های IP سرویس‌ها را از داخل پادها بچرخانیم:
  kubectl exec -it <pod-name> -n ns1 -- curl <ip-address>
  • سپس ما سعی کردیم نام سرویس را مستقیماً بچرخانیم که منجر به خطای وضوح شد و اهمیت DNS را در Kubernetes نشان داد.

استفاده از نام دامنه کاملاً واجد شرایط (FQDN).

  • با استفاده از FQDN سرویس، ما با موفقیت به خدمات در فضای نام دسترسی پیدا کردیم:
  kubectl exec -it deploy-ns1-68b96c55c4-db4b9 -n ns1 -- curl svc-ns2.ns2

پاکسازی

  • برای حفظ یک فضای کاری مرتب، هر دو فضای نام را حذف کردیم که سرویس‌ها و توسعه‌های مرتبط را نیز حذف کردیم:
  kubectl delete namespace ns1
  kubectl delete namespace ns2

خوراکی های کلیدی

  • فضاهای نام برای سازماندهی منابع و مدیریت دسترسی در یک خوشه Kubernetes ضروری هستند.
  • استقرار و خدمات دست در دست هم برای ارائه برنامه های کاربردی مقیاس پذیر و در معرض دید قرار دادن آنها برای دسترسی خارجی کار کنید.
  • FQDN برای ارتباط بین فضای نامی بسیار مهم است و بر اهمیت DNS در Kubernetes تاکید می کند.
  • حفظ پاکیزگی در خوشه ما با حذف فضاهای نام و منابع غیر ضروری برای مدیریت کارآمد بسیار مهم است.

این کاوش جامع نه تنها درک ما از فضاهای نام، استقرار و سرویس‌های Kubernetes را تقویت کرد، بلکه تجربه عملی را با دستورات و پیکربندی‌های مربوط به مدیریت یک خوشه Kubernetes ارائه کرد.

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

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

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

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