ارکستراسیون کانتینرها در مقیاس بزرگ
Kubernetes (که اغلب K8s نوشته میشود) یک پلتفرم متنباز برای ارکستراسیون کانتینرها است که در اصل توسط گوگل توسعه یافت. وظیفهی اصلی آن، مدیریت اجرای کانتینرها روی مجموعهای از سرورها (Cluster) است: تصمیم میگیرد هر کانتینر روی کدام سرور اجرا شود، اگر یک کانتینر از کار افتاد آن را بهطور خودکار دوباره راهاندازی میکند، و میتواند بر اساس میزان بار، تعداد نمونههای در حال اجرای یک سرویس را خودکار افزایش یا کاهش دهد.
واحد پایهی اجرا در Kubernetes Pod نام دارد که یک یا چند کانتینر مرتبط را در بر میگیرد. یک تعریف ساده از یک Deployment (نحوهی اجرای پایدار چند نسخه از یک سرویس) به این شکل است:
apiVersion: apps/v1
kind: Deployment
metadata:
name: order-service
spec:
replicas: 3
selector:
matchLabels:
app: order-service
template:
metadata:
labels:
app: order-service
spec:
containers:
- name: order-service
image: registry.mycompany.com/order-service:1.2.0
ports:
- containerPort: 8000
چند مفهوم کلیدی دیگر
replicas: 3 یعنی همیشه سه نمونه از این سرویس بهطور همزمان اجرا شوند؛ اگر یکی از کار بیفتد، Kubernetes بلافاصله نمونهی جدیدی جایگزین میکند. مفهوم Service در Kubernetes، ترافیک را بین این نمونهها توزیع میکند (Load Balancing) و Ingress نقش مشابه API Gateway برای ورود ترافیک از بیرون به داخل Cluster را ایفا میکند. یادگیری کامل Kubernetes خودش موضوع یک دورهی مستقل است؛ هدف این درس فقط آشنایی با مفاهیم پایه و جایگاه آن در معماری میکروسرویس بود.