رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
معرفی Kubernetes و مفاهیم پایه ارکستریشن کانتینر

معرفی Kubernetes و مفاهیم پایه ارکستریشن کانتینر

Kubernetes چیست و چرا برای مدیریت کانتینرها در مقیاس بزرگ به آن نیاز داریم؟ آشنایی با معماری، مفاهیم پایه (Pod، Deployment، Service) و شروع کار عملی با Minikube و kubectl.

معرفی Kubernetes و مفاهیم پایه ارکستریشن کانتینر

وقتی تعداد کانتینرهای یک برنامه از چند تا فراتر می‌رود و باید روی چند سرور مختلف اجرا شوند، مدیریت دستی آن‌ها با دستوراتی مثل docker run عملاً غیرممکن می‌شود. اینجاست که Kubernetes (یا به‌اختصار K8s) وارد می‌شود؛ یک پلتفرم متن‌باز برای ارکستریشن (Orchestration) کانتینرها که کارهایی مثل زمان‌بندی اجرا، مقیاس‌پذیری خودکار، بازیابی از خطا و مدیریت شبکه بین کانتینرها را به‌صورت خودکار انجام می‌دهد.

ارکستریشن کانتینر چیست و چرا به آن نیاز داریم؟

وقتی از Docker برای اجرای یک یا چند کانتینر روی یک سرور استفاده می‌کنید، همه‌چیز ساده است. اما در مقیاس واقعی این سؤال‌ها مطرح می‌شوند:

  • اگر یک کانتینر کرش کند، چه کسی آن را دوباره بالا می‌آورد؟
  • اگر ترافیک سایت زیاد شود، چطور به‌صورت خودکار تعداد نمونه‌ها (replica) افزایش پیدا کند؟
  • چطور بین چند سرور فیزیکی، بار به‌طور بهینه توزیع شود؟
  • چطور نسخهٔ جدید برنامه را بدون قطعی (Zero Downtime) منتشر کنیم؟

Kubernetes دقیقاً برای پاسخ به همین سؤال‌ها طراحی شده و امروز استاندارد صنعتی ارکستریشن کانتینر است.

معماری Kubernetes: اجزای اصلی یک کلاستر

یک کلاستر Kubernetes از دو نوع نود تشکیل شده است:

Control Plane (صفحهٔ کنترل)

مغز متفکر کلاستر است و تصمیم می‌گیرد چه چیزی، کجا و چطور اجرا شود. مهم‌ترین اجزای آن عبارتند از:

  • kube-apiserver: دروازهٔ ورودی همهٔ درخواست‌ها (از جمله دستورات kubectl)
  • etcd: پایگاه دادهٔ کلید-مقدار که وضعیت کل کلاستر را ذخیره می‌کند
  • kube-scheduler: تصمیم می‌گیرد هر Pod روی کدام نود اجرا شود
  • kube-controller-manager: وضعیت فعلی را با وضعیت مطلوب مقایسه و اصلاح می‌کند

Worker Node (نود کارگر)

جایی است که کانتینرهای واقعی روی آن اجرا می‌شوند و شامل این اجزاست:

  • kubelet: عامل اجرایی روی هر نود که Podها را مدیریت می‌کند
  • kube-proxy: مسیریابی شبکه بین Podها و Serviceها
  • Container Runtime: موتور اجرای کانتینر (معمولاً containerd)

مفاهیم پایه‌ای که باید بشناسید

پیش از شروع کار عملی، آشنایی با چند مفهوم کلیدی ضروری است:

مفهومتوضیح
Podکوچک‌ترین واحد قابل استقرار؛ یک یا چند کانتینر که با هم شبکه و فضای ذخیره‌سازی به اشتراک می‌گذارند
Deploymentتعریف می‌کند چند نسخه (Replica) از یک Pod باید همیشه در حال اجرا باشد و به‌روزرسانی‌ها را مدیریت می‌کند
Serviceیک آدرس شبکه‌ای ثابت برای دسترسی به مجموعه‌ای از Podها فراهم می‌کند، حتی اگر Podها عوض شوند
Namespaceفضای نام مجازی برای جداسازی منطقی منابع (مثلاً محیط تست از محیط تولید)
ConfigMap / Secretذخیرهٔ تنظیمات و اطلاعات حساس جدا از کد برنامه

راه‌اندازی یک کلاستر تک‌نودی برای تست با Minikube

برای یادگیری و تست، نیازی به چند سرور واقعی نیست؛ Minikube یک کلاستر تک‌نودی روی سیستم شما اجرا می‌کند:

7 خط
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

minikube start --driver=docker

minikube status
kubectl get nodes
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

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

11 خط
kubectl get pods

kubectl create deployment nginx-app --image=nginx

kubectl scale deployment nginx-app --replicas=3

kubectl expose deployment nginx-app --port=80 --type=NodePort

kubectl logs POD_NAME

kubectl exec -it POD_NAME -- /bin/bash
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

Kubernetes یا Docker Compose؛ کدام را انتخاب کنیم؟

اگر پروژه‌ای کوچک دارید که روی یک سرور اجرا می‌شود، Docker Compose کاملاً کافی و ساده‌تر است. اما وقتی نیاز به مقیاس‌پذیری خودکار، توزیع بار بین چند سرور، یا بازیابی خودکار از خطا در سطح تولید (Production) دارید، Kubernetes گزینهٔ درست‌تری است. بسیاری از تیم‌ها مسیر را از یک سرور اختصاصی با Docker Compose شروع می‌کنند و با رشد پروژه به Kubernetes مهاجرت می‌کنند.

برای اینکه از سلامت Podها و نودهای کلاستر هم مطلع باشید، پیشنهاد می‌کنیم مقالهٔ مانیتورینگ سرور لینوکس با Prometheus و Node Exporter را هم مطالعه کنید؛ چون Prometheus یکی از رایج‌ترین ابزارهای مانیتورینگ کلاسترهای Kubernetes هم هست.

جمع‌بندی

Kubernetes با انتزاع مفاهیمی مثل Pod، Deployment و Service، مدیریت برنامه‌های کانتینری در مقیاس بزرگ را به‌مراتب ساده‌تر می‌کند. شروع کار با یک کلاستر تک‌نودی مثل Minikube بهترین راه برای یادگیری عملی این مفاهیم پیش از اجرای آن‌ها روی سرورهای واقعی تولید است.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS