Какие ключевые ресурсы настраиваются при развертывании приложения в Kubernetes?

Ответ

При развертывании приложения в Kubernetes настраивается набор взаимосвязанных ресурсов, каждый из которых выполняет свою роль:

  1. Deployment — декларативное управление состоянием приложения. Отвечает за создание и обновление набора идентичных подов (Pods), обеспечивая нужное количество реплик и стратегию обновления (например, RollingUpdate).

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-app-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: my-app
      template:
        # ... шаблон пода (Pod template) ...
  2. Pod — минимальная развертываемая единица в Kubernetes. Представляет собой группу из одного или нескольких контейнеров с общими ресурсами хранения и сети. Обычно поды управляются через Deployment.

    # ... внутри spec.template в Deployment ...
    spec:
      containers:
      - name: my-app-container
        image: my-image:latest
        ports:
        - containerPort: 8080
        resources:
          limits:
            memory: "256Mi"
            cpu: "500m"
  3. Service — обеспечивает стабильную сетевую точку доступа к группе подов. Service получает постоянный IP-адрес и DNS-имя внутри кластера и распределяет трафик между подами, выбранными по selector.

  4. Ingress — управляет внешним доступом к сервисам в кластере, как правило, по HTTP/HTTPS. Позволяет настраивать маршрутизацию на основе хоста или пути, а также терминировать TLS.

  5. ConfigMap / Secret — позволяют отделить конфигурационные данные и секреты (пароли, ключи API) от кода приложения и передавать их в контейнеры как переменные окружения или файлы.

  6. PersistentVolume (PV) и PersistentVolumeClaim (PVC) — используются для организации постоянного хранилища данных, которое не зависит от жизненного цикла пода.

  7. Probes (Liveness, Readiness) — механизмы для проверки состояния контейнера, позволяющие Kubernetes автоматически перезапускать неработающие контейнеры или временно исключать их из балансировки нагрузки.