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