Перейти к содержимому

Управление постоянными томами

Объект StorageClass, который используется в кластере Managed Kubernetes по умолчанию, задает для создаваемого сетевого диска Compute 1000 IOPS. Если вы хотите задать другое значение IOPS, создайте новый объект StorageClass:

  1. Сохраните спецификацию объекта StorageClass в файл my-sc.yaml:

    yaml
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
    name: my-sc
    provisioner: csi.mws.ru
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
    parameters:
    iops: "10000"

    Здесь parameters.iops — величина IOPS. Возможные значения — от 1000 до 10000 c шагом 100. Изменить значение после создания объекта невозможно.

  2. Создайте объект StorageClass:

    bash
    kubectl apply -f my-sc.yaml

    Ожидаемый результат:

    bash
    storageclass.storage.k8s.io/my-sc created
Важно

Сетевые диски, которые используются в качестве томов, оплачиваются по правилам тарификации сервиса Compute.

  1. Сохраните спецификацию объекта PersistentVolumeClaim в файл pvc-dynamic.yaml:

    yaml
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
    name: my-pvc
    spec:
    accessModes:
    - ReadWriteOnce
    resources:
    requests:
    storage: 8Gi
    storageClassName: mws

    Здесь:

    • spec.accessModesрежим доступа к тому. Режим доступа ReadWriteMany не поддерживается.

    • spec.storageClassName — имя объекта StorageClass. Можно не указывать, если вы хотите использовать StorageClass по умолчанию.

  2. Создайте объект PersistentVolumeClaim:

    bash
    kubectl apply -f pvc-dynamic.yaml

    Ожидаемый результат:

    bash
    persistentvolumeclaim/pvc-dynamic created

В разделе ComputeСетевые диски будет создан диск с префиксом pvc в имени.

Важно

Сетевые диски, которые используются в качестве томов, оплачиваются по правилам тарификации сервиса Compute.

  1. Создайте независимый сетевой диск Compute в той же зоне доступности, где расположен узел, на котором будет запущен под.

  2. Сохраните спецификацию объекта PersistentVolume в файл pv-static.yaml:

    yaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: static-pv
    spec:
    accessModes:
    - ReadWriteOnce
    capacity:
    storage: 5Gi
    csi:
    driver: csi.mws.ru
    fsType: ext4
    volumeHandle: compute/projects/<имя проекта>/disks/<имя диска>
    storageClassName: mws
    volumeMode: Filesystem

    Здесь:

    • spec.accessModesрежим доступа к тому. Режим доступа ReadWriteMany не поддерживается.
    • spec.csi.volumeHandle — идентификатор сетевого диска Compute.
    • spec.storageClassName — имя объекта StorageClass.
  3. Создайте объект PersistentVolume:

    bash
    kubectl apply -f pv-static.yaml

    Ожидаемый результат:

    bash
    persistentvolume/pv-static created
  4. Сохраните спецификацию объекта PersistentVolumeClaim в файл pvc-static.yaml:

    yaml
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: static-pvc
    namespace: default
    spec:
    accessModes:
    - ReadWriteOnce
    resources:
    requests:
    storage: 5Gi
    storageClassName: mws
    volumeName: static-pv
    • spec.accessModesрежим доступа к тому. Режим доступа ReadWriteMany не поддерживается.
    • spec.storageClassName — имя объекта StorageClass.
    • spec.volumeName — имя объекта PersistentVolume.
  5. Создайте объект PersistentVolumeClaim:

    bash
    kubectl apply -f pvc-static.yaml

    Ожидаемый результат:

    bash
    persistentvolumeсlaim/pvc-static created

Вы можете увеличить размер тома, только если он подготовлен динамически. Размер нельзя уменьшить.

Чтобы увеличить размер тома, измените значение параметра spec.resources.requests.storage в спецификации объекта PersistentVolumeClaim:

bash
kubectl patch pvc <имя объекта PVC> -p '{"spec":{"resources":{"requests":{"storage":"<новый размер тома>"}}}}'

Ожидаемый результат:

bash
persistentvolumeclaim/<имя объекта PVC> patched
  • Динамически подготовленный том
  • Статически подготовленный том

Удалите объект PersistentVolumeClaim:

bash
kubectl delete pvc <имя объекта PVC>

Ожидаемый результат:

bash
persistentvolumeclaim "<имя объекта PVC>" deleted from default namespace

Сетевой диск в сервисе Compute будет удален автоматически.