Ответ
При развертывании приложения в Kubernetes настраивается набор взаимосвязанных ресурсов, каждый из которых выполняет свою роль:
-
Deployment — декларативное управление состоянием приложения. Отвечает за создание и обновление набора идентичных подов (
Pods), обеспечивая нужное количество реплик и стратегию обновления (например,RollingUpdate).apiVersion: apps/v1 kind: Deployment metadata: name: my-app-deployment spec: replicas: 3 selector: matchLabels: app: my-app template: # ... шаблон пода (Pod template) ... -
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" -
Service — обеспечивает стабильную сетевую точку доступа к группе подов.
Serviceполучает постоянный IP-адрес и DNS-имя внутри кластера и распределяет трафик между подами, выбранными поselector. -
Ingress — управляет внешним доступом к сервисам в кластере, как правило, по HTTP/HTTPS. Позволяет настраивать маршрутизацию на основе хоста или пути, а также терминировать TLS.
-
ConfigMap / Secret — позволяют отделить конфигурационные данные и секреты (пароли, ключи API) от кода приложения и передавать их в контейнеры как переменные окружения или файлы.
-
PersistentVolume (PV) и PersistentVolumeClaim (PVC) — используются для организации постоянного хранилища данных, которое не зависит от жизненного цикла пода.
-
Probes (Liveness, Readiness) — механизмы для проверки состояния контейнера, позволяющие Kubernetes автоматически перезапускать неработающие контейнеры или временно исключать их из балансировки нагрузки.