Skip to content
FALLAHZADEH ACADEMY

دواپس · 7 Nov 2026 · 3 min

کوبرنتیز (Kubernetes) چیست؟ آموزش مفاهیم پایه از صفر

کوبرنتیز استاندارد اجرای کانتینرها در مقیاس بزرگ است. در این مقاله می‌بینید چرا به آن نیاز داریم، اجزای اصلی‌اش (Pod، Deployment، Service و…) چه می‌کنند و چطور اولین برنامه را روی یک کلاستر محلی اجرا کنید.

📺 ویدیوی کامل این آموزش: تماشا در یوتیوب · کانال آپارات

Docker به ما یاد داد برنامه را داخل کانتینر بسته‌بندی کنیم تا همه‌جا یکسان اجرا شود. اما وقتی ده‌ها یا صدها کانتینر روی چند سرور دارید، سؤال‌های تازه‌ای پیش می‌آید: اگر یک کانتینر از کار افتاد چه کسی دوباره روشنش کند؟ ترافیک بین نسخه‌ها چطور تقسیم شود؟ به‌روزرسانی بدون قطعی چطور انجام شود؟ Kubernetes (به اختصار K8s) دقیقاً برای همین ساخته شده است.

کوبرنتیز چه کاری انجام می‌دهد؟

  • اجرای خودکار و ترمیم: اگر کانتینری خراب شود، کوبرنتیز آن را دوباره اجرا می‌کند.
  • مقیاس‌پذیری: تعداد نسخه‌های برنامه را با یک دستور یا به‌صورت خودکار بر اساس بار کم و زیاد می‌کند.
  • Load Balancing و کشف سرویس: ترافیک را بین نسخه‌ها تقسیم می‌کند و هر سرویس یک نام ثابت دارد.
  • به‌روزرسانی تدریجی (Rolling Update): نسخهٔ جدید را کم‌کم جایگزین می‌کند و در صورت مشکل برمی‌گرداند.
  • مدیریت تنظیمات و رمزها: با ConfigMap و Secret.

معماری در یک نگاه

یک کلاستر کوبرنتیز از دو بخش تشکیل می‌شود:

  • Control Plane: مغز کلاستر؛ شامل API Server (درِ ورود همهٔ دستورها)، etcd (پایگاه دادهٔ وضعیت)، Scheduler (تصمیم می‌گیرد هر Pod روی کدام نود اجرا شود) و Controller Manager (وضعیت واقعی را به وضعیت مطلوب می‌رساند).
  • Worker Nodeها: سرورهایی که کانتینرها رویشان اجرا می‌شوند؛ هر نود یک kubelet و یک Container Runtime دارد.

ایدهٔ کلیدی کوبرنتیز حالت مطلوب (Desired State) است: شما در یک فایل YAML می‌گویید «سه نسخه از این برنامه می‌خواهم» و کوبرنتیز دائماً تلاش می‌کند واقعیت را با آن یکی کند.

مفاهیم اصلی

مفهوم کاربرد
Pod کوچک‌ترین واحد اجرا؛ یک یا چند کانتینر با شبکهٔ مشترک
Deployment تعداد نسخه‌ها و نحوهٔ به‌روزرسانی Podها را مدیریت می‌کند
Service آدرس و نام ثابت برای دسترسی به گروهی از Podها
Ingress ورود ترافیک HTTP/HTTPS از بیرون به سرویس‌ها
ConfigMap / Secret نگهداری تنظیمات و اطلاعات محرمانه
Namespace تقسیم منطقی کلاستر بین تیم‌ها یا محیط‌ها

اولین برنامه روی کلاستر محلی

برای تمرین لازم نیست سرور بخرید. با ابزارهایی مثل kind یا minikube یک کلاستر روی کامپیوتر خودتان می‌سازید:

kind create cluster --name lab
kubectl get nodes

یک Deployment با سه نسخه از وب‌سرور nginx:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 3
  selector:
    matchLabels: { app: web }
  template:
    metadata:
      labels: { app: web }
    spec:
      containers:
        - name: nginx
          image: nginx:1.27
          ports:
            - containerPort: 80
kubectl apply -f web.yaml
kubectl get pods
kubectl expose deployment web --port=80 --type=ClusterIP
kubectl port-forward service/web 8080:80

حالا در مرورگر http://localhost:8080 را باز کنید. یکی از Podها را پاک کنید (kubectl delete pod <name>) و ببینید کوبرنتیز بلافاصله Pod جدیدی می‌سازد.

دستورهای پرکاربرد kubectl

kubectl get pods -A            # همهٔ Podها در همهٔ Namespaceها
kubectl describe pod <name>    # جزئیات و رویدادها (اولین قدم عیب‌یابی)
kubectl logs <pod>             # لاگ کانتینر
kubectl scale deployment web --replicas=5
kubectl rollout status deployment web
kubectl rollout undo deployment web

پیش‌نیازها

قبل از کوبرنتیز این‌ها را بلد باشید: لینوکس و خط فرمان، شبکه (IP، پورت، DNS) و Docker. کسی که بدون این پایه سراغ کوبرنتیز می‌رود معمولاً در عیب‌یابی شبکه و Podها گیر می‌کند.

قدم بعدی

بعد از مفاهیم پایه، سراغ Helm، Ingress Controller، مانیتورینگ با Prometheus و Grafana و یکپارچه‌سازی با CI/CD بروید؛ همان مسیری که در نقشهٔ راه DevOps آمده است.


ادامهٔ مسیر: نقشهٔ راه کامل، سرفصل‌ها و سؤالات متداول را در صفحهٔ آموزش DevOps ببینید. اگر نمی‌دانید از کجا شروع کنید، آزمون تعیین مسیر را بزنید یا نقشهٔ راه PDF رایگان را بگیرید. سؤال دارید؟ از دکمهٔ «مشاوره رایگان» در تلگرام یا بله بپرسید.