В этом разделе описывается, как использовать StorageClasses для динамического создания PV и PVC для постоянного хранения данных и их совместного использования в рабочих нагрузках.
apiVersion: v1kind: PersistentVolumeClaimmetadata:name: pvc-sfs-autonamespace: defaultannotations:everest.io/csi.volume-name-prefix: test # (Optional) Storage volume name prefix of the automatically-created underlying storagespec:accessModes:- ReadWriteMany # The value must be ReadWriteMany for SFS.resources:requests:storage: 1Gi # SFS volume capacitystorageClassName: csi-nas # The StorageClass is SFS.
Параметр | Обязательно | Описание |
|---|---|---|
storage | Yes | Запрошенная ёмкость в PVC, в Gi. Для SFS этот параметр используется только для проверки. Он не должен быть пустым или 0, а его значение фиксировано на 1. Любое установленное вами значение не вступит в силу. |
everest.io/csi.volume-name-prefix | No | (Optional) Этот параметр доступен только при версии кластера v1.23.14-r0, v1.25.9-r0, v1.27.6-r0, v1.28.4-r0 или более новой, а также при установленном в кластере Everest v2.4.15 или более новой версии. Этот параметр указывает имя базового хранилища, которое создаётся автоматически. Фактическое имя базового хранилища имеет формат «Префикс имени тома хранилища + PVC UID». Если параметр оставлен пустым, будет использован префикс по умолчанию pvc. Введите от 1 до 26 символов, которые не могут начинаться или заканчиваться дефисом (-). Допустимы только строчные буквы, цифры и дефисы (-). Например, если префикс имени тома хранилища установлен в test, фактическое имя базового хранилища будет test-{UID}. |
kubectl apply -f pvc-sfs-auto.yaml
apiVersion: apps/v1kind: Deploymentmetadata:name: web-demonamespace: defaultspec:replicas: 2selector:matchLabels:app: web-demotemplate:metadata:labels:app: web-demospec:containers:- name: container-1image: nginx:latestvolumeMounts:- name: pvc-sfs-volume # Volume name, which must be the same as the volume name in the volumes fieldmountPath: /data # Location where the storage volume is mountedimagePullSecrets:- name: default-secretvolumes:- name: pvc-sfs-volume # Volume name, which is user-definedpersistentVolumeClaim:claimName: pvc-sfs-auto # Name of the created PVC
kubectl apply -f web-demo.yaml
После создания рабочей нагрузки данные в каталоге монтирования контейнера будут сохраняться постоянно. Проверьте хранилище, обратившись к Verifying Data Persistence and Sharing.
kubectl get pod -n <namespace> | grep web-demo
Ожидаемый вывод:
kubectl exec -n <namespace> web-demo-846b489584-mjhm9 -- ls /datakubectl exec -n <namespace> web-demo-846b489584-wvv5s -- ls /data
Если для обоих pod'ов не возвращается результат, файл в пути /data не существует.
kubectl exec -n <namespace> web-demo-846b489584-mjhm9 -- touch /data/static
kubectl exec -n <namespace> web-demo-846b489584-mjhm9 -- ls /data
Ожидаемый вывод:
static
kubectl delete pod -n <namespace> web-demo-846b489584-mjhm9
Ожидаемый вывод:
pod "web-demo-846b489584-mjhm9" deleted
После удаления контроллер Deployment автоматически создает реплику.
kubectl get pod -n <namespace> | grep web-demo
Ожидаемый вывод выглядит следующим образом, где web-demo-846b489584-d4d4j — это только что созданный pod:
kubectl exec -n <namespace> web-demo-846b489584-d4d4j -- ls /data
Ожидаемый вывод:
static
Файл static сохранён, указывая, что данные могут храниться постоянно.
kubectl get pod -n <namespace> | grep web-demo
Ожидаемый вывод:
kubectl exec -n <namespace> web-demo-846b489584-d4d4j -- touch /data/share
Проверьте файлы в пути /data pod.
Ожидаемый вывод:
sharestatic
kubectl exec -n <namespace> web-demo-846b489584-wvv5s -- ls /data
Ожидаемый вывод:
sharestatic
После создания файла в пути /data pod, если файл также создаётся в пути /data другого pod, два pod'а используют один и тот же том.
Вы также можете выполнить операции, перечисленные в Table 2.
Операция | Описание | Процедура |
|---|---|---|
Просмотр событий | Просмотрите имена событий, типы событий, количество повторений, события Kubernetes, время первого появления и время последнего появления PVC или PV. |
|
Просмотр YAML‑файла | Просмотрите, скопируйте или загрузите YAML‑файл PVC или PV. |
|
Редактирование политики возврата | Измените политику возврата PV. |
|
Синхронизация ёмкости PVC (поддерживается только для PVC, созданных из неподдиректорий файловых систем SFS Capacity‑Oriented) | Если базовое хранилище превышает размер PVC, измените ёмкость PVC в консоли CCE, чтобы она соответствовала новому размеру. |
|