Механизм Persistent Volume Claim (PVC) в Linx Cloud позволяет динамически выделять и подключать к вашим подам блочные диски с необходимыми характеристиками.
Это обеспечивается за счет того, что в Kubernetes от Linx Cloud реализован CSI-драйвер(Container Storage Interface), который взаимодействует с API Linx Cloud для управления блочными дисками.
Для того, чтобы динамически создать PV на базе PVC, вам потребуется указать корректный класс хранения (storage class). Полный список классов хранения и типов дисков, доступных для вашего кластера, необходимо выполнить команду:
kubectl get storageclasses.storage.k8s.io
Пример вывода этой команды:
csi-ceph cinder.csi.openstack.org 10d
csi-ceph-retain cinder.csi.openstack.org 10d
csi-dp1 cinder.csi.openstack.org 10d
csi-dp1-high-iops cinder.csi.openstack.org 10d
csi-dp1-high-iops-retain cinder.csi.openstack.org 10d
csi-dp1-retain cinder.csi.openstack.org 10d
csi-dp1-ssd cinder.csi.openstack.org 10d
csi-dp1-ssd-retain cinder.csi.openstack.org 10d
csi-hdd (default) cinder.csi.openstack.org 10d
csi-hdd-retain cinder.csi.openstack.org 10d
csi-ko1-high-iops cinder.csi.openstack.org 10d
csi-ko1-high-iops-retain cinder.csi.openstack.org 10d
csi-ko1-ssd cinder.csi.openstack.org 10d
csi-ko1-ssd-retain cinder.csi.openstack.org 10d
csi-local-ssd cinder.csi.openstack.org 10d
csi-local-ssd-retain cinder.csi.openstack.org 10d
csi-ms1 cinder.csi.openstack.org 10d
csi-ms1-retain cinder.csi.openstack.org 10d
csi-ssd cinder.csi.openstack.org 10d
csi-ssd-retain cinder.csi.openstack.org 10d
Далее требуется указать этот storage class в поле storageClass декларации PVC:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nginx-pvc-ssd
spec:
storageClassName: "csi-ko1-ssd"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
---
apiVersion: v1
kind: Pod
metadata:
name: nginx-test-pvc
labels:
name: nginx-test-pvc
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
name: http
volumeMounts:
# name must match the volume name below
- name: nginx-persistent-storage
# mount path within the container
mountPath: /val/lib/nginx/test
volumes:
- name: nginx-persistent-storage
persistentVolumeClaim:
claimName: nginx-pvc-ssd