Интерфейс для систем хранения данных (Container Storage Interface)

Container Storage Interface (CSI) — это стандартизированный интерфейс, который позволяет интегрировать различные системы хранения данных с Kubernetes. Это упрощает управление хранением данных для контейнеризированных приложений, позволяя динамически выделять диски и управлять ими через API.

Подключение Container Storage Interface

Чтобы подключить Container Storage Interface:

  1. Выберите проект, в котором нужно подключить CSI.
  2. В главном меню портала перейдите в раздел Ресурсы  Контейнеры  Kubernetes as a Service.

  3. В строке с нужным кластером нажмите на кнопку Кнопка Действия (в строке).png и выберите пункт Подключить Container Storage Interface.
  4. Нажмите на кнопку Подтвердить.
  5. Проверьте, что Container Storage Interface подключен.

Проверка подключения Container Storage Interface

Чтобы проверить подключение Container Storage Interface, введите в командной строке:

kubectl get pods -n kube-system

При успешном подключении Container Storage Interface вы увидите список подов в активном состоянии (Running):

Доступные типы дисков

Чтобы проверить доступные типы дисков, введите команду:

kubectl get sc

В результате получите список с доступными типами дисков:

Типы дисков отличаются производительностью и количеством IOPS:

Тип дискаIOPS ReadIOPS Write
t1cloud-light500300
t1cloud-basic30001000
t1cloud-average1100003000
t1cloud-high1150005000
t1cloud-high2150005000
t1cloud-high3150005000

IOPS — операции чтения и записи. Чем больше проводится операций чтения, тем меньше операций записи, и наоборот. При выполнении операций расходуется один и тот же дисковый ресурс.

Пример использования Container Storage Interface

  1. Создайте запрос на предоставление хранилища данных (PVC).
  2. Cоздайте под с приложением и свяжите его с хранилищем данных.
  3. Проверьте, что манифесты успешно применились.

Создание запроса PVC

Чтобы создать запрос на предоставление хранилища данных, примените манифест:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pvc
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: t1cloud-average1
  volumeMode: Filesystem

Создание пода

Чтобы создать под с приложением и связать его с хранилищем данных, примените манифест:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: default
spec:
  volumes:
    - name: csi-data-cinderplugin
      persistentVolumeClaim:
        claimName: test-pvc
  containers:
    - name: nginx
      image: nginx
      ports:
        - containerPort: 80
          protocol: TCP
      resources: {}
      volumeMounts:
        - name: csi-data-cinderplugin
          mountPath: /var/lib/www/html

Проверка манифестов

Чтобы проверить создание запроса PVC, введите команду: 

kubectl get pvc

При успешном создании запроса PVC получите ответ:

Чтобы проверить создание хранилища данных, введите команду:

kubectl get pv

При успешном создании хранилища получите ответ:

Чтобы проверить создание пода с приложением, введите команду:

kubectl get pod

При успешном создании пода получите ответ: