Для того, что бы контейнеры могли где то сохранять свои файлы (и иметь доступ к одним и тем же файлам из нескольких контейнеров) - необходимо дисковое хранилище. В Kubernetes их несколько разных видов.
Тут пример установки поддержки дискового хранилища на основе NFS сервера.
Предполагается, что настроенный NFS сервер у нас уже имеется, и его ip адрес: 192.168.254.76
Сначала, на всех нодах кластера установим nfs клиента:
sudo apt install nfs-common -y
Устанавливаем через Helm:
helm repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts helm repo update
Смотрим, какая версия самая свежая:
helm search repo -l csi-driver-nfs
Устанавливаем ее:
helm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs --namespace kube-system --version <version>
Создадим файл storageclass.yaml в котором опишем наш StorageClass:
--- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-storage annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: nfs.csi.k8s.io parameters: server: 192.168.254.76 share: /x/storage reclaimPolicy: Delete volumeBindingMode: Immediate mountOptions: - nfsvers=4.1
и применим:
kubectl apply -f storageclass.yaml
Попробуем теперь создать PersistentVolumeClaim в автоматическом режиме, без PersistentVolume (Dynamic Provisioning). Создадим файл pvc-test.yaml следующего содержания (с нужными параметрами):
--- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs-dynamic namespace: default spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi
И применим его:
kubectl apply -f pvc-test.yaml
Проверяем:
kubectl get pv
NAME | CAPACITY | ACCESS MODES | RECLAIM POLICY | STATUS | CLAIM | STORAGECLASS | VOLUMEATTRIBUTESCLASS | REASON | AGE |
---|---|---|---|---|---|---|---|---|---|
pvc-29518075-f07d-4b88-a90e-b2052d7a7bd6 | 10Gi | RWX | Retain | Bound | default/pvc-nfs-dynamic | nfs-storage | <unset> | 5s |
kubectl get pvc
NAME | STATUS | VOLUME | CAPACITY | ACCESS MODES | STORAGECLASS | VOLUMEATTRIBUTESCLASS | AGE |
---|---|---|---|---|---|---|---|
pvc-nfs-dynamic | Bound | pvc-29518075-f07d-4b88-a90e-b2052d7a7bd6 | 10Gi | RWX | nfs-storage | <unset> | 9s |
Самое время узнать, как себя чувствует только что установленный кластер kubernetes настроив мониторинг.