Ответ
Pod — это минимальная исполняемая единица в Kubernetes, но напрямую их разворачивают редко, предпочитая использовать контроллеры, такие как Deployment. Однако для разового запуска или отладки можно создать pod напрямую.
1. Использование YAML-манифеста (рекомендуемый способ):
Создайте файл pod.yaml:
apiVersion: v1
kind: Pod
metadata:
name: nginx-example
spec:
containers:
- name: nginx-container
image: nginx:alpine
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
Примените манифест:
kubectl apply -f pod.yaml
2. Использование команды kubectl run (упрощенный способ):
kubectl run nginx-pod --image=nginx:alpine --port=80
3. Проверка состояния:
# Список всех pod
kubectl get pods
# Детальная информация
kubectl describe pod nginx-example
# Логи контейнера
kubectl logs nginx-example
Почему обычно используют Deployment вместо прямого создания Pod?
- Управление жизненным циклом: Deployment обеспечивает самовосстановление (restart policy), обновления без простоя (rolling updates) и масштабирование.
- Устойчивость: Если узел (node) выходит из строя, Pod, созданный напрямую, не будет перезапущен на другом узле. Deployment же поддерживает желаемое количество реплик.
- Объявление состояния: Deployment — это декларативный объект, описывающий желаемое состояние, за которым следит Kubernetes.
Практический пример: В реальных проектах я почти всегда начинаю с Deployment, даже для простых сервисов, чтобы сразу заложить основу для масштабирования и отказоустойчивости.