Об’єкти Kubernetes: Pod, Deployment, Service і ConfigMap
Коротко: У Kubernetes бажаний стан описується об’єктами: поди запускають контейнери, deployment підтримують їхню роботу, service роблять їх доступними, а ConfigMap/Secret постачають конфігурацію.
Докладніше: Kubernetes (K8s) — це система, що керує контейнерами на безлічі машин. У YAML-файлах ви описуєте, що має працювати; Kubernetes стежить, щоб фактичний стан відповідав бажаному (перезапуск у разі збою, розподіл, масштабування).
Подробиці
Найважливіші об’єкти
- Pod: найменша одиниця; один або кілька контейнерів зі спільною мережею та сховищем. Поди недовговічні.
- Deployment: керує подами застосунку: кількість реплік, плавні оновлення (rolling updates) (нова версія крок за кроком), відкат.
- Service: стабільна адреса й балансування навантаження для групи подів (ClusterIP внутрішній, NodePort/LoadBalancer зовнішній).
- Ingress: маршрутизація HTTP ззовні (домени, шляхи, TLS).
- ConfigMap: значення конфігурації; Secret: чутливі значення (у кодуванні Base64, краще із зовнішнім шифруванням).
- Namespace: логічне розділення (dev, prod).
- PersistentVolume/Claim: постійне сховище. StatefulSet для застосунків зі станом (бази даних), Job/CronJob для завдань.
Приклад
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 3
selector:
matchLabels: { app: web }
template:
metadata:
labels: { app: web }
spec:
containers:
- name: web
image: my-app:1.2.0
ports: [{ containerPort: 3000 }]
readinessProbe:
httpGet: { path: /health, port: 3000 }
apiVersion: v1
kind: Service
metadata:
name: web
spec:
selector: { app: web }
ports: [{ port: 80, targetPort: 3000 }]kubectl apply -f file.yaml, kubectl get pods, kubectl logs pod, kubectl describe pod, kubectl rollout undo deployment/web.
Важливі поняття
Мітки та селектори (labels and selectors) зв’язують об’єкти. Проби (liveness/readiness) перевіряють працездатність. Ліміти ресурсів (CPU, пам’ять) не дають одному застосунку використати все. Автомасштабування (HPA) підлаштовує кількість реплік під навантаження. Декларативно замість імперативно: файл YAML — джерело істини, в ідеалі в Git (GitOps).
Початок та оцінка
Для навчання: minikube, kind, k3s або Docker Desktop локально. У production використовують керовані служби (GKE, EKS, AKS). K8s потужний, але складний; для невеликих проєктів часто достатньо Docker Compose чи платформи (Vercel, Fly.io). Спочатку вивчіть контейнери та мережі.
Див. також: Основи Kubernetes, Docker Compose