کوبرنتیز (Kubernetes یا K8s) سامانه متنبازی برای ارکستریشن کانتینرهاست. اگر داکر ساخت Image و اجرای کانتینر را ساده میکند، کوبرنتیز میتواند تعداد زیادی کانتینر را روی چند Node مستقر، مقیاسدهی و در صورت خرابی جایگزین کند. این دو ابزار دقیقا رقیب هم نیستند. در عمل ساخت Image معمولا با Docker یا ابزار سازگار با استاندارد OCI انجام میشود و اجرای آن در کلاستر بر عهده Runtime کانتینر است.
مفاهیم اصلی کوبرنتیز
| جزء | کاربرد واقعی در فروشگاه |
|---|---|
| Cluster و Node | مجموعه سرورهای Worker و اجزای Control Plane |
| Pod | کوچکترین واحد قابل استقرار، شامل یک یا چند کانتینر مرتبط |
| Deployment | تعداد Replicaهای Stateless را حفظ و Rolling Update را کنترل میکند |
| ReplicaSet | تعداد Podهای موردنظر Deployment را برقرار نگه میدارد |
| Service | نشانی پایدار برای دسترسی شبکهای به مجموعه Podها |
| Ingress / Gateway API | هدایت ترافیک HTTP یا HTTPS از بیرون کلاستر |
| ConfigMap | تنظیمات غیرمحرمانه جدا از Image |
| Secret | نگهداری داده حساس با سیاست دسترسی مناسب، نه تضمین رمزنگاری خودکار |
| StatefulSet | مدیریت بارهای Stateful با هویت و ذخیرهسازی پایدارتر |
| DaemonSet | اجرای یک Pod در Nodeهای منتخب، مانند عامل جمعآوری لاگ |
| Job و CronJob | کار یکباره یا زمانبندیشده مانند تولید گزارش |
| HPA | مقیاسدهی Replica بر اساس Metricهای تعریفشده |
| PV و PVC | درخواست و مدیریت ذخیرهسازی پایدار |
کوبرنتیز، داکر و داکر سوارم چه تفاوتی دارند؟
| ویژگی | Docker | Docker Swarm | کوبرنتیز |
|---|---|---|---|
| هدف اصلی | ساخت و اجرای کانتینر | ارکستریشن سادهتر کلاستر Docker | ارکستریشن گسترده با APIهای متنوع |
| واحد مدیریت | Container | Service و Task | Pod و Deployment |
| مقیاسدهی | معمولا دستی یا با ابزار بیرونی | Replica سرویس | Replica، HPA و کنترلرهای دیگر |
| شبکه و انتشار | Port و Network | Overlay و Routing Mesh | Service، Ingress و Gateway |
| هزینه عملیاتی | کمتر برای تکسرور | میانه | بیشتر ولی انعطافپذیرتر |
در کوبرنتیز، دپلویمنت تعداد Replicaهای موردنظر را تعریف میکند. کنترلر دپلویمنت تلاش میکند در زمان خرابی یا تغییر Image، وضعیت واقعی را با وضعیت مطلوب هماهنگ نگه دارد. Service نقطه دسترسی ثابتی است که به Podهای سالم هدایت میشود.
مثال Deployment و Service برای API فروشگاه
apiVersion: apps/v1
kind: Deployment
metadata:
name: shop-api
spec:
replicas: 3
selector:
matchLabels:
app: shop-api
template:
metadata:
labels:
app: shop-api
spec:
containers:
- name: api
image: registry.example.org/shop-api:1.4.2
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: shop-api
spec:
selector:
app: shop-api
ports:
- port: 80
targetPort: 8080
kubectl apply -f shop-api.yaml
kubectl get pods
kubectl rollout status deployment/shop-api
kubectl scale deployment/shop-api --replicas=5
kubectl rollout undo deployment/shop-api
ملاحظات Production
این Manifest آموزشی است و پیش از استفاده عملی باید Resource Requests/Limits، SecurityContext، Secret، دسترسپذیری، NetworkPolicy، TLS و سیاست استقرار تنظیم شوند.
برای پروژه کوچک، داکر یا Compose میتواند سادهتر باشد. کوبرنتیز وقتی ارزش دارد که نیاز واقعی به مدیریت چند Node، ظرفیت تغییرپذیر و قابلیتهای کلاستر داشته باشید.