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 استفاده شود.