Gymterview
middle

Какие типы Volumes существуют в Kubernetes?

Volume — механизм хранения данных для Pod’ов. В отличие от файловой системы контейнера, данные в Volume переживают перезапуск контейнера (но не обязательно удаление Pod’а).

Основные типы

Тип Жизненный цикл Привязка к ноде Применение
emptyDir Пока Pod запущен Нет Обмен данными между контейнерами одного Pod’а
hostPath Независимо от Pod’а Да Доступ к системным файлам ноды (используется редко)
configMap / secret Пока существует объект Нет Монтирование конфигурации
nfs Независимо от Pod’а Нет Сетевое хранилище, доступное с любой ноды

emptyDir

Создаётся при назначении Pod’а на ноду, существует пока Pod запущен. Удаляется при удалении Pod’а.

Пример
spec:
  containers:
    - name: app
      volumeMounts:
        - name: shared-data
          mountPath: /app/data
    - name: sidecar
      volumeMounts:
        - name: shared-data
          mountPath: /data
  volumes:
    - name: shared-data
      emptyDir: {}

hostPath

Монтирует файл или директорию с файловой системы ноды в Pod. Привязывает Pod к конкретной ноде.

Пример
volumes:
  - name: host-logs
    hostPath:
      path: /var/log
      type: Directory

nfs

Монтирование сетевой файловой системы NFS. Данные доступны с любой ноды.

Пример
volumes:
  - name: nfs-volume
    nfs:
      server: nfs-server.example.com
      path: /exports/data

На собеседовании: достаточно знать emptyDir, hostPath, configMap/secret и PersistentVolumeClaim. Частая ошибка — путать emptyDir (удаляется с Pod’ом) и PersistentVolume (живёт независимо).