Как развернуть pod в Kubernetes?

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

Ответ

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, даже для простых сервисов, чтобы сразу заложить основу для масштабирования и отказоустойчивости.