Ответ
В Kubernetes существует множество типов томов (Volume), которые интегрируются с различными системами хранения. Основные категории:
1. Локальные тома (Local):
emptyDir— Временное хранилище, создаваемое при запуске пода и удаляемое вместе с ним. Используется для обмена данными между контейнерами в одном поде.hostPath— Монтирует файл или директорию с ноды (хоста) в под. Используется с осторожностью, так как привязывает под к конкретной ноде.
2. Сетевые тома (Network):
persistentVolumeClaim(PVC) — Основной абстракция. Позволяет поду запрашивать хранилище, не зная деталей реализации (например,nfs,csi,awsElasticBlockStore).nfs— Монтирует сетевую файловую систему (NFS).csi— Интерфейс для сторонних провайдеров хранилищ (например, AWS EBS, GCP Persistent Disk, Azure Disk, Ceph RBD).configMap,secret— Специальные тома для монтирования конфигураций и секретов как файлов.
Пример PersistentVolumeClaim для запроса хранилища:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: app-data-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: fast-ssd # Указываем класс хранилища
Пример использования PVC в поде:
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
containers:
- name: app
image: nginx
volumeMounts:
- name: storage
mountPath: /usr/share/nginx/html
volumes:
- name: storage
persistentVolumeClaim:
claimName: app-data-pvc # Ссылаемся на созданный PVC