Сохраняется ли состояние (state) для Deployment в Kubernetes?

«Сохраняется ли состояние (state) для Deployment в Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, Deployment сам по себе не сохраняет состояние приложения (stateless). Он управляет только желаемым количеством идентичных Pod-реплик и их стратегией обновления.

Для хранения состояния используются другие ресурсы Kubernetes:

  1. PersistentVolume (PV) / PersistentVolumeClaim (PVC): Для постоянного хранения данных на диске, которые переживут перезапуск Pod.
    # Пример PVC в манифесте Pod/Deployment
    spec:
      containers:
      - name: app
        volumeMounts:
        - mountPath: "/data"
          name: storage
      volumes:
      - name: storage
        persistentVolumeClaim:
          claimName: my-app-pvc
  2. ConfigMap / Secret: Для хранения конфигурации и чувствительных данных, которые инжектируются в Pod как переменные среды или файлы.
  3. Внешние stateful-сервисы: Базы данных (например, запущенные как StatefulSet), объектные хранилища (S3) и т.д.

StatefulSet — это ресурс Kubernetes, предназначенный именно для stateful-приложений, где важны устойчивые идентификаторы Pod, стабильные сетевые имена и постоянное хранилище.