سیس ادمین سادهی ساده
به سوی کوبرنتیز و فراتر از آن: کار عملی با پاد
رسیدیم به قسمت دوم از مجموعهی کوبرنتیز. همونطور که تو قسمت قبلی گفته بودم میخوایم تجربه عملی کسب کنیم. قراره اینجا پاد رو در کوبرنتیز بسازیم و با kubectl آشنا بشیم. همچنین منیفست قسمت قبل رو هم کاملتر میکنیم تا یکی دو تا مفهوم دیگه رو راجع به پادها یاد بگیریم.
برای این نوشته فرض شده شما قسمت قبلی رو خوندید و همچنین یه کلاستر آماده هم دارید. علاوه بر این لازمه که kubectl رو هم نصب کرده باشید. من خودم تصمیم گرفتم از سایت katacoda.com استفاده کنم که یه سایت آموزشیه و توسط خود سایت kubernetes.io هم پیشنهاد شده. البته فیلترشکن میخواد ولی راحتتر از بالا آوردن یه کلاستره. در نهایت داکر هم طبیعتا باید بدونید.
دوباره به اون منیفست قسمت قبل نگاه کنیم:
apiVersion: v1
kind: Pod
metadata:
name: frontend-web-server
labels:
app: front
spec:
containers:
- name: webserver
image: nginx
ports:
- name: 'http'
containerPort: 80
protocol: 'TCP'
این رو در فایلی به نام pod.yaml ذخیره میکنم. حالا بیاید این رو روی کلاستر ایجاد کنیم:
kubectl apply -f pod.yaml
برای استفاده از kubectl میشه بعدش apply رو نوشت و خودش میره و اون چیزی که تو فایل هست رو ایجاد میکنه. همچنین اگه بخواید یه تغییر ایجاد کنید هم apply خودش تشخیص میده. این رو بعدا میبینیم. خروجی رو توی تصویر زیر میبینید:
حالا میخوایم ببینیم آیا پاد ایجاد شده یا نه. از دستور زیر استفاده میکنیم:
kubectl get pods
اگه حال نداشتید میتونید به جای pods بنویسید pod یا حتی po. اینم از خروجی:
مهمترین بخش برای ما STATUS است که خدا رو شکر Running هست.
میتونید جزئیات بیشتری هم ببینید با این دستور:
kubectl get pods -o wide
یا حتی توضیحات بیشتر پاد:
kubectl describe pod frontend-web-server
و در آخر لاگهایی که برنامهی توی پاد تولید میکنه:
kubectl logs frontend-web-server
دقت کنید که اینجا لازم نیست عبارت pod رو بنویسید. چون لاگ فقط برای پاد وجود داره.
الان میخوام یه تغییری توی فایل بدم. مثلا تصویر رو از nginx به ubuntu تغییر بدم. دوباره دستور اولی رو میزنم:
دیدید خودش به روز رسانی رو انجام میده.
حالا هم که کارمون تموم شده باهاش حذفش میکنیم. برای این کار میتونیم دو کار انجام بدیم:
kubectl delete pod frontend-web-server
یا
kubectl delete -f pod.yaml
تو تصویر زیر خروجی رو میبینید:
حالا میخوام یه قابلیت دیگه رو توضیح بدم. میتونیم به کوبرنتیز بگیم این کانتینر ما حداقل فلان قدر حافظه و cpu میخواد یا حداکثر این قدر میخواد. برای این کار از requests و limits استفاده میکنیم و فایل به این شکل تغییر میکنه:
apiVersion: v1
kind: Pod
metadata:
name: frontend-web-server
labels:
app: front
spec:
containers:
- name: webserver
image: nginx
resources:
requests:
memory: '64M'
cpu: '250m'
limits:
memory: '128M'
cpu: '500m'
ports:
- name: http
containerPort: 80
protocol: TCP
اومدم یه بخش جدید به اسم resources باز کردم و با requests نوشتم چقدر لازم دارم و با limits نوشتم حداکثر چقدر باشه. یه نکته توی cpu هست که اونم واحدشه. واحد cpu به millicore هست که یک هزارم زمان cpu هستش. مانند قبل این فایل رو هم میشه apply کرد و نتیجهاش رو دید که فرقی نمیکنه با قبل ولی این بار منابعش رو مشخص کردیم.
این قسمت هم تموم شد. امیدوارم مفید بوده باشه. اگرم سوالی بود این پایین بنویسید. تو قسمت بعدی ان شاء الله به سراغ سرویس در کوبرنتیز میریم.
مطلبی دیگر از این انتشارات
به سوی کوبرنتیز و فراتر از آن: آشنایی با پاد و تعریف آن
مطلبی دیگر از این انتشارات
داکر برای برنامهنویسها: قسمت چهارم - حذف تصویر و کانتینر در داکر
مطلبی دیگر از این انتشارات
لینوکسی بشیم: کنترل خروجی و ورودی دستورها در شل