Kubernetes 101: استفاده و مدیریت ظروف در ابر

مقدمه
در دنیای ابر بومی امروز ، Kubernetes به راه حل برای استقرار ، مدیریت و مقیاس گذاری برنامه های کانتینر تبدیل شده است. این که آیا شما یک مبتدی هستید یا یک مهندس DevOps با تجربه ، درک Kubernetes برای استقرار ابر بسیار مهم است. این وبلاگ اصول اولیه Kubernetes ، معماری آن و نحوه استقرار و مدیریت کانتینرها را به طور مؤثر پوشش می دهد.
Kubernetes چیست؟
Kubernetes (K8S) یک بستر ارکستراسیون کانتینر منبع باز است که به طور خودکار استقرار ، مقیاس گذاری و بهره برداری از ظروف کاربردی را خودکار می کند. در ابتدا توسط Google ساخته شده است ، اکنون توسط بنیاد محاسبات بومی Cloud (CNCF) نگهداری می شود.
ویژگی های اصلی Kubernetes:
- استقرار خودکار و مقیاس گذاری: تضمین می کند که برنامه ها با مدیریت چرخه های حیات کانتینر به طور کارآمد اجرا می شوند.
- خود درمانی: به طور خودکار ظروف شکست خورده را مجدداً راه اندازی می کند و جایگزین های پاسخگو نیست.
- تعادل بار و کشف خدمات: ترافیک داخلی را به طور کارآمد مدیریت می کند.
- به روزرسانی های نورد و بازگشت: به روزرسانی های برنامه یکپارچه را بدون خرابی فعال می کند.
- ارکستراسیون ذخیره سازی: از تهیه ذخیره سازی پویا برای برنامه ها پشتیبانی می کند.
نمای کلی معماری Kubernetes
Kubernetes از معماری کارشناسی ارشد که شامل اجزای زیر است ، پیروی می کند:
گره اصلی (صفحه کنترل):
- سرور API: به عنوان قسمت جلوی Kubernetes عمل می کند و همه ارتباطات را انجام می دهد.
- مدیر کنترل کننده: کنترل کننده های مسئول حفظ حالت های مورد نظر را مدیریت می کند.
- برنامه ریزی: بر اساس در دسترس بودن منابع ، بارهای کاری را به گره های کارگر اختصاص می دهد.
- ETCD: یک فروشگاه ارزش کلیدی که داده های خوشه ای را در خود جای داده است.
گره های کارگر:
- کلت: تضمین می کند که گره غلافهای اختصاص داده شده را اجرا می کند و گزارش ها را به استاد باز می گرداند.
- پروکسی باشید: درخواست های شبکه و ارسال درخواست های داخل خوشه را انجام می دهد.
- زمان اجرا کانتینر: ظروف واقعی (داکر ، کانتین و غیره) را اجرا می کند.
استفاده از برنامه در Kubernetes
بیایید قدم به قدم برویم تا یک سرور وب ساده Nginx را با استفاده از Kubernetes مستقر کنیم.
مرحله 1: kubernetes را نصب کنید
برای شروع ، شما باید Kubernetes را با استفاده از ابزارهایی مانند Minikube (برای توسعه محلی) نصب کنید یا یک خوشه مبتنی بر ابر را در AWS (EKS) ، Google Cloud (GKE) یا Azure (AKS) تنظیم کنید.
مرحله 2: یک فایل YAML استقرار ایجاد کنید
استقرار باعث می شود تعداد مورد نظر غلاف به طور مداوم اجرا شود.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
مرحله 3: استقرار را اعمال کنید
دستور زیر را برای استقرار برنامه اجرا کنید:
kubectl apply -f nginx-deployment.yaml
مرحله 4: استقرار را به عنوان یک سرویس افشا کنید
برای دسترسی به برنامه ، آن را به عنوان یک سرویس در معرض دید قرار دهید.
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
خدمات را اعمال کنید:
kubectl apply -f nginx-service.yaml
مرحله 5: استقرار را تأیید کنید
بررسی کنید که غلافها در حال اجرا هستند:
kubectl get pods
جزئیات سرویس را بررسی کنید:
kubectl get svc
پس از اختصاص LoadBalancer IP خارجی ، می توانید از طریق آدرس داده شده به سرور وب NGINX دسترسی پیدا کنید.
مدیریت بار کاری Kubernetes
پس از استقرار درخواست شما ، Kubernetes قابلیت های مختلف مدیریتی را ارائه می دهد:
kubectl scale --replicas=5 deployment/nginx-deployment
این تعداد غلافهای در حال اجرا را به 5 افزایش می دهد.
-
به روزرسانی های نورد:
نسخه برنامه را بدون خرابی به روز کنید:
kubectl set image deployment/nginx-deployment nginx=nginx:latest
-
گزارش های نظارت:
مشاهده گزارش های برنامه برای اشکال زدایی:
kubectl logs -f
شبکه Kubernetes
شبکه Kubernetes ارتباطات یکپارچه بین غلاف ها ، خدمات و مشتریان خارجی را تضمین می کند.
اجزای شبکه:
- خوشه: خدمات داخلی را در داخل خوشه قرار می دهد.
- NODEPORT: امکان دسترسی به خدمات در درگاه خاص هر گره را فراهم می کند.
- LoadBalancer: دسترسی خارجی به خدمات را فراهم می کند.
- کنترل کننده Ingress: ترافیک HTTP و HTTPS خارجی را مدیریت می کند.
بهترین روشهای امنیتی Kubernetes
امنیت هنگام مدیریت خوشه های Kubernetes بسیار مهم است. برخی از بهترین شیوه ها عبارتند از:
- RBAC (کنترل دسترسی مبتنی بر نقش): دسترسی کاربر و سرویس را محدود کنید.
- سیاست های شبکه: کنترل ارتباط بین غلافها.
- مدیریت اسرار: داده های حساس را به طور ایمن ذخیره کنید.
- سیاست های امنیتی POD: تنظیمات امنیتی را برای POD ها تعریف کنید.
HELM: مدیر بسته Kubernetes
HELM با استفاده از الگوهای از پیش تنظیم شده به نام نمودارها ، استقرار برنامه Kubernetes را ساده می کند.
دستورات HELM اساسی:
helm install my-release stable/nginx
- لیست نمودارهای کلاه نصب شده:
helm list
helm uninstall my-release
نظارت و ورود به سیستم در Kubernetes
مشاهده برای حفظ خوشه های Kubernetes بسیار مهم است.
ابزاری برای نظارت:
- پرومتئوس و گرافانا: معیارها را جمع آوری و تجسم کنید.
- Fluentd & Elk Stack: ورود به سیستم متمرکز
- داشبورد Kubernetes: یک UI مبتنی بر وب برای نظارت بر وضعیت خوشه ای فراهم می کند.
پایان
Kubernetes استقرار و مدیریت برنامه های کانتینر شده را ساده می کند و آن را به یک مهارت ضروری برای مهندسان DevOps تبدیل می کند. با درک اصول اولیه Kubernetes و تمرین با استقرار در دنیای واقعی ، می توانید پتانسیل کامل توسعه ابر بومی را باز کنید.
اگر این راهنما را مفید دیدید ، آن را با شبکه خود به اشتراک بگذارید و برای بینش های DevOps بیشتر با ما در ارتباط باشید!