Какие основные компоненты и их настройки вы выполняли в Kubernetes для развертывания и управления приложениями?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Ожидают, что кандидат знает базовые Kubernetes-объекты и понимает, как ими управлять приложением в кластере. Важно уметь объяснить, как настраиваются контейнеры, сеть, конфигурация, доступ и масштабирование. Для middle-уровня также важны практические детали: health checks, rollout, ресурсы и работа с секретами.
Определение:
Kubernetes — это система оркестрации контейнеров, которая запускает, масштабирует и обновляет приложения в кластере. Основные компоненты для прикладной работы — это Pod, Deployment, Service, ConfigMap, Secret, Ingress, Namespace, PersistentVolume/PersistentVolumeClaim, а также механизмы readiness/liveness probes и ограничения ресурсов.
Pod описывает один или несколько контейнеров, которые запускаются вместе. Deployment управляет жизненным циклом Pod’ов и обновлениями. Service дает стабильный способ доступа к Pod’ам. ConfigMap и Secret выносят настройки и чувствительные данные из образа. Ingress используется для внешнего HTTP/HTTPS-доступа. Томa нужны для хранения данных, которые должны переживать пересоздание Pod’ов.
Пример использования:
Типичный сценарий: Python-приложение упаковано в Docker-образ, после чего в Kubernetes создаются манифесты для запуска нескольких реплик, передачи конфигурации через ConfigMap, пароля к БД через Secret и публикации сервиса через Service.
apiVersion: apps/v1
kind: Deployment
metadata:
name: python-app
spec:
replicas: 2
selector:
matchLabels:
app: python-app
template:
metadata:
labels:
app: python-app
spec:
containers:
- name: app
image: myrepo/python-app:1.0.0
ports:
- containerPort: 8000
envFrom:
- configMapRef:
name: python-app-config
- secretRef:
name: python-app-secret
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 15
periodSeconds: 20
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"
---
apiVersion: v1
kind: Service
metadata:
name: python-app
spec:
selector:
app: python-app
ports:
- port: 80
targetPort: 8000
type: ClusterIP
Пояснение кода:
Код показывает связку из двух основных объектов.
Сначала Deployment:
replicas: 2— приложение запускается в двух экземплярах для отказоустойчивости.selectorиtemplate.labels— связывают Deployment с Pod’ами.image— указывает Docker-образ Python-приложения.containerPort: 8000— порт внутри контейнера, на котором слушает приложение.envFrom— подгружает переменные изConfigMapиSecret.readinessProbe— проверяет, готов ли контейнер принимать трафик.livenessProbe— проверяет, жив ли процесс и нужен ли перезапуск.resources— задает гарантии и лимиты по CPU и памяти.
Потом Service:
selectorвыбирает Pod’ы с меткойapp: python-app.port: 80— внешний порт сервиса внутри кластера.targetPort: 8000— порт контейнера, куда проксируется трафик.type: ClusterIP— сервис доступен внутри кластера; для внешнего доступа обычно добавляютIngressили другой тип Service.
Если нужна конфигурация в реальном проекте, отдельно создаются ConfigMap и Secret, а для хранения данных — PersistentVolumeClaim. Для обновлений используют rollout через Deployment, а масштабирование делают изменением числа реплик.
Ключевые моменты:
Deployment— основной объект для запуска, обновления и отката приложения.Service— стабильная точка доступа к Pod’ам, которые могут пересоздаваться.ConfigMapиSecretпозволяют отделить конфигурацию и чувствительные данные от образа.readinessProbeиlivenessProbeкритичны для корректного трафика и самовосстановления.resources requests/limitsнужны для планирования нагрузки и защиты кластера.IngressиPersistentVolumeClaimподключают внешний доступ и постоянное хранение, когда это требуется.