Этот вопрос проверяет знание методов эффективного и безопасного развертывания приложений в Kubernetes.
Чтобы правильно развернуть приложение в Kubernetes, следует:
- Использовать декларативный подход (Deployment, Helm).
- Разделять сервисы по разным namespace.
- Настраивать liveness и readiness probe для мониторинга состояния Pod-ов.
- Определять resource limits и requests для оптимального распределения ресурсов.
- Используйте Deployment и Helm-чарты для управления обновлениями и конфигурацией.
- Пример манифеста Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image:latest- Используйте namespace, чтобы разделять окружения (dev, prod).
- Команда для создания namespace:
kubectl create namespace my-namespace- Readiness Probe проверяет, готов ли Pod принимать трафик.
- Liveness Probe перезапускает Pod при сбое.
- Пример:
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 5- Используйте requests (минимальные ресурсы) и limits (максимальные).
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"Вывод:
Применение этих практик делает развертывание в Kubernetes более надежным, управляемым и масштабируемым.