EMZETT.
Увійти

Об’єкти 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