Каково максимальное и рекомендуемое количество контейнеров в Pod Kubernetes?

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

Ответ

Теоретически количество контейнеров в Pod не имеет жесткого ограничения со стороны Kubernetes.

На практике Pod обычно содержит:

  • Один основной контейнер (app container), выполняющий бизнес-логику.
  • От 0 до нескольких вспомогательных контейнеров (sidecar containers) для задач, тесно связанных с жизненным циклом основного приложения (логирование, синхронизация конфигов, прокси).

Пример манифеста Pod с двумя контейнерами:

apiVersion: v1
kind: Pod
metadata:
  name: web-pod
spec:
  containers:
  - name: nginx-app          # Основной контейнер
    image: nginx:latest
    ports:
    - containerPort: 80
  - name: log-sidecar        # Вспомогательный sidecar-контейнер
    image: busybox:latest
    command: ['sh', '-c', 'tail -f /var/log/nginx/access.log']
    volumeMounts:
    - name: logs
      mountPath: /var/log/nginx

Рекомендации:

  • 1-3 контейнера на Pod — типичная и рекомендуемая практика.
  • Избегайте монолитных Pod с большим количеством контейнеров (5+), так как это усложняет:
    • Отладку и логирование.
    • Управление ресурсами (requests/limits).
    • Независимое масштабирование и обновление компонентов.

Контейнеры в одном Pod разделяют сетевой namespace (один IP), общие тома и cgroups, что делает их тесно связанными.