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 (живёт независимо).