برنامه نویسی

40 Days Of Kubernetes (7/40)

Summarize this content to 400 words in Persian Lang

1. مدیریت اجباری در مقابل اعلامی Kubernetes

در Kubernetes، می توانید منابع را با استفاده از دو روش اصلی مدیریت کنید: ضروری و اعلامی.

رویکرد امری: شما مستقیماً دستوراتی را به Kubernetes برای انجام اقدامات صادر می کنید. این شبیه به اجرای دستورات مانند است kubectl run یا kubectl create. شما به Kubernetes می گویید که چه کاری انجام دهد، و او بلافاصله این عمل را انجام می دهد. با این حال، تغییرات ایجاد شده با این روش به راحتی قابل تکرار نیستند زیرا هیچ پیکربندی دائمی وجود ندارد.

مثال:
kubectl run nginx –image=nginx

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

مثال YAML (اعلامی):
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
– name: nginx
image: nginx
ports:
– containerPort: 80

سپس این پیکربندی YAML را با استفاده از:
kubectl apply -f nginx-pod.yaml

2. دستورات ضروری در Kubernetes

با روش ضروری، شما مستقیماً دستورات را به Kubernetes صادر می کنید. اینها چند دستور کلیدی هستند:

یک پاد را اجرا کنید: این kubectl run دستور به شما امکان می دهد یک غلاف در پرواز ایجاد کنید.
kubectl run nginx –image=nginx

این یک غلاف به نام ایجاد می کند nginx با استفاده از nginx تصویر از داکر هاب

Pods را دریافت کنید: با اجرا کردن وضعیت غلاف ها را بررسی کنید:
kubectl get pods

با این کار لیستی از تمام پادهای در حال اجرا در خوشه باز می گردد.

یک پاد را حذف کنید: برای حذف nginx غلاف:
kubectl delete pod nginx

پاد را توصیف کنید: اگر مشکلی در غلاف وجود دارد، می‌توانید آن را برای کسب اطلاعات بیشتر شرح دهید:
kubectl describe pod nginx

Exec در یک Pod: برای تعامل با یک پاد، مانند اشکال زدایی یک مشکل، می توانید exec داخل ظرف در حال اجرا:
kubectl exec -it nginx — /bin/bash

این یک پوسته bash را در داخل ظرف باز می کند.

3. مدیریت اعلامی از طریق YAML

YAML قالب اصلی پیکربندی برای تعریف منابع Kubernetes است. در اینجا اجزای یک مانیفست معمولی YAML آمده است:

apiVersion: نسخه استفاده شده از Kubernetes API را تعریف می کند (به عنوان مثال، v1، apps/v1).
مهربان: نوع منبعی که ایجاد می کنید را مشخص می کند، مانند Pod، Deployment، Serviceو غیره
ابرداده: ابرداده را برای منبع فراهم می کند، مانند name، labels، و حاشیه نویسی.
مشخصات: وضعیت مورد نظر منبع را توصیف می کند. برای یک پاد، این شامل فهرست کانتینرها، تصاویر، پورت‌ها، حجم‌ها و سایر تنظیمات است.

مثال YAML برای استقرار:

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
– name: nginx
image: nginx
ports:
– containerPort: 80

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

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

این فایل YAML یک استقرار با 3 کپی از یک pod NGINX ایجاد می کند. Kubernetes تضمین می کند که 3 نمونه از pod همیشه در حال اجرا هستند.

عناصر کلیدی قابل توجه:

ماکت ها: این مشخص می‌کند که چند نمونه از pod مورد نظرتان را دارید.

انتخابگر: پادهایی را انتخاب می کند که استقرار بر اساس آنها مدیریت خواهد کرد app: nginx برچسب زدن

قالب: این ساختار غلاف از جمله آن را تعریف می کند metadata، spec، و ظروف.

4. اشکال زدایی پادها و عیب یابی

اشکال زدایی یک پاد شامل بررسی وضعیت و لاگ ها یا حتی اجرای دستورات داخل کانتینر است. در اینجا یک رویکرد دقیق وجود دارد:

بررسی وضعیت Pod: استفاده کنید kubectl get pods برای مشاهده وضعیت فعلی غلاف ها. ممکن است وضعیت هایی مانند Running، Pending، CrashLoopBackOffو غیره

سیاهههای مربوط به غلاف: اگر غلاف داخل باشد CrashLoopBackOff یا Error حالت، می توانید گزارش های آن را مشاهده کنید:
kubectl logs pod-name

توصیف پاد: شرح مفصلی از غلاف، از جمله رویدادها، خطاها و چرخه عمر آن را دریافت کنید:
kubectl describe pod pod-name

مثال خطا – کشش تصویر: اگر در کشیدن تصویر مشکلی وجود داشته باشد، رویداد گزارش می‌دهد:
Failed to pull image “nginx123”: rpc error: code = Unknown desc = Error response from daemon: manifest for nginx123 not found

این نشان می دهد که نام تصویر نادرست است.

5. YAML های خشک و تولید کننده خودکار

هنگامی که از دستورات ضروری استفاده می کنید، می توانید فایل های YAML مربوطه را با –dry-run=client و -o yaml گزینه ها:

kubectl run nginx –image=nginx –dry-run=client -o yaml

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

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

این خروجی YAML برای دستور ایجاد pod است که می توانید آن را در یک فایل ذخیره کنید:

kubectl run nginx –image=nginx –dry-run=client -o yaml > pod.yaml

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

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

این روش به شما امکان می دهد یک دستور ضروری را به یک فایل YAML قابل استفاده مجدد تبدیل کنید که می تواند نسخه کنترل شود یا در خطوط لوله CI/CD استفاده شود.

1. مدیریت اجباری در مقابل اعلامی Kubernetes

در Kubernetes، می توانید منابع را با استفاده از دو روش اصلی مدیریت کنید: ضروری و اعلامی.

  • رویکرد امری: شما مستقیماً دستوراتی را به Kubernetes برای انجام اقدامات صادر می کنید. این شبیه به اجرای دستورات مانند است kubectl run یا kubectl create. شما به Kubernetes می گویید که چه کاری انجام دهد، و او بلافاصله این عمل را انجام می دهد. با این حال، تغییرات ایجاد شده با این روش به راحتی قابل تکرار نیستند زیرا هیچ پیکربندی دائمی وجود ندارد.

    مثال:

     kubectl run nginx --image=nginx
    
  • رویکرد اعلامی: در مقابل، روش اعلامی از فایل های YAML (یا JSON) برای اعلام وضعیت مطلوب سیستم استفاده می کند. شما تعریف می‌کنید که منابع در فایل‌های پیکربندی چگونه باید باشند، و Kubernetes از ایجاد یا به‌روزرسانی منابع برای مطابقت با وضعیت مطلوب مراقبت می‌کند. این رویکرد برای محیط های تولید ترجیح داده می شود زیرا مقیاس پذیرتر و قابل نگهداری تر است.

    مثال YAML (اعلامی):

     apiVersion: v1
     kind: Pod
     metadata:
       name: nginx-pod
       labels:
         app: nginx
     spec:
       containers:
       - name: nginx
         image: nginx
         ports:
         - containerPort: 80
    

    سپس این پیکربندی YAML را با استفاده از:

     kubectl apply -f nginx-pod.yaml
    

2. دستورات ضروری در Kubernetes

با روش ضروری، شما مستقیماً دستورات را به Kubernetes صادر می کنید. اینها چند دستور کلیدی هستند:

  • یک پاد را اجرا کنید:
    این kubectl run دستور به شما امکان می دهد یک غلاف در پرواز ایجاد کنید.

     kubectl run nginx --image=nginx
    

    این یک غلاف به نام ایجاد می کند nginx با استفاده از nginx تصویر از داکر هاب

  • Pods را دریافت کنید:
    با اجرا کردن وضعیت غلاف ها را بررسی کنید:

     kubectl get pods
    

    با این کار لیستی از تمام پادهای در حال اجرا در خوشه باز می گردد.

  • یک پاد را حذف کنید:
    برای حذف nginx غلاف:

     kubectl delete pod nginx
    
  • پاد را توصیف کنید:
    اگر مشکلی در غلاف وجود دارد، می‌توانید آن را برای کسب اطلاعات بیشتر شرح دهید:

     kubectl describe pod nginx
    
  • Exec در یک Pod:
    برای تعامل با یک پاد، مانند اشکال زدایی یک مشکل، می توانید exec داخل ظرف در حال اجرا:

     kubectl exec -it nginx -- /bin/bash
    

    این یک پوسته bash را در داخل ظرف باز می کند.

3. مدیریت اعلامی از طریق YAML

YAML قالب اصلی پیکربندی برای تعریف منابع Kubernetes است. در اینجا اجزای یک مانیفست معمولی YAML آمده است:

  • apiVersion: نسخه استفاده شده از Kubernetes API را تعریف می کند (به عنوان مثال، v1، apps/v1).

  • مهربان: نوع منبعی که ایجاد می کنید را مشخص می کند، مانند Pod، Deployment، Serviceو غیره

  • ابرداده: ابرداده را برای منبع فراهم می کند، مانند name، labels، و حاشیه نویسی.

  • مشخصات: وضعیت مورد نظر منبع را توصیف می کند. برای یک پاد، این شامل فهرست کانتینرها، تصاویر، پورت‌ها، حجم‌ها و سایر تنظیمات است.

مثال YAML برای استقرار:

   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: nginx-deployment
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
         - name: nginx
           image: nginx
           ports:
           - containerPort: 80
وارد حالت تمام صفحه شوید

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

این فایل YAML یک استقرار با 3 کپی از یک pod NGINX ایجاد می کند. Kubernetes تضمین می کند که 3 نمونه از pod همیشه در حال اجرا هستند.

عناصر کلیدی قابل توجه:

  • ماکت ها: این مشخص می‌کند که چند نمونه از pod مورد نظرتان را دارید.
  • انتخابگر: پادهایی را انتخاب می کند که استقرار بر اساس آنها مدیریت خواهد کرد app: nginx برچسب زدن
  • قالب: این ساختار غلاف از جمله آن را تعریف می کند metadata، spec، و ظروف.

4. اشکال زدایی پادها و عیب یابی

اشکال زدایی یک پاد شامل بررسی وضعیت و لاگ ها یا حتی اجرای دستورات داخل کانتینر است. در اینجا یک رویکرد دقیق وجود دارد:

  • بررسی وضعیت Pod:
    استفاده کنید kubectl get pods برای مشاهده وضعیت فعلی غلاف ها. ممکن است وضعیت هایی مانند Running، Pending، CrashLoopBackOffو غیره

  • سیاهههای مربوط به غلاف:
    اگر غلاف داخل باشد CrashLoopBackOff یا Error حالت، می توانید گزارش های آن را مشاهده کنید:

     kubectl logs pod-name
    
  • توصیف پاد:
    شرح مفصلی از غلاف، از جمله رویدادها، خطاها و چرخه عمر آن را دریافت کنید:

     kubectl describe pod pod-name
    
  • مثال خطا – کشش تصویر:
    اگر در کشیدن تصویر مشکلی وجود داشته باشد، رویداد گزارش می‌دهد:

     Failed to pull image "nginx123": rpc error: code = Unknown desc = Error response from daemon: manifest for nginx123 not found
    

    این نشان می دهد که نام تصویر نادرست است.

5. YAML های خشک و تولید کننده خودکار

هنگامی که از دستورات ضروری استفاده می کنید، می توانید فایل های YAML مربوطه را با --dry-run=client و -o yaml گزینه ها:

   kubectl run nginx --image=nginx --dry-run=client -o yaml
وارد حالت تمام صفحه شوید

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

این خروجی YAML برای دستور ایجاد pod است که می توانید آن را در یک فایل ذخیره کنید:

   kubectl run nginx --image=nginx --dry-run=client -o yaml > pod.yaml
وارد حالت تمام صفحه شوید

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

این روش به شما امکان می دهد یک دستور ضروری را به یک فایل YAML قابل استفاده مجدد تبدیل کنید که می تواند نسخه کنترل شود یا در خطوط لوله CI/CD استفاده شود.

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

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

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

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