Подключение и пример использования Cinder CSI

Cinder CSI — это драйвер, реализующий стандарт Container Storage Interface (CSI) для интеграции OpenStack Cinder с Kubernetes. Он позволяет динамически создавать, подключать и управлять томами Cinder как Persistent Volumes  в кластерах Kubernetes.

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

Подключение Cinder CSI

Подключение Cinder CSI возможно, только если статус заказа В порядке и статус кластера Включен.

Чтобы подключить Cinder CSI:

  1. Выберите проект, в котором нужно подключить Cinder CSI.
  2. Подключите Cinder CSI из Marketplace.
  3. Проверьте, что Container Storage Interface подключен.

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

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

kubectl get pods -n kube-system

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

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

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

kubectl get sc

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

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

Тип дискаIOPS ReadIOPS Write
t1cloud-high150005000
t1cloud-average100003000
t1cloud-basic30001000
t1cloud-light500300

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

Пример использования Cinder CSI

  1. Создайте запрос на предоставление хранилища данных (PVC ).

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

Cinder CSI также позволяет создавать моментальные снимки, восстанавливать тома из снимков и клонировать тома.

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

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

  1. Создайте файл манифеста PVC, например, test-pvc.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: <имя PVC>
      namespace: default
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
      storageClassName: <тип диска>
      volumeMode: Filesystem
    где: 
    • <имя PVC> — имя PVC, например, test-pvc;
    • <тип диска>тип диска.
  2. Примените созданный манифест PVC:
    kubectl apply -f test-pvc.yaml

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

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

  1. Создайте файл манифеста пода для записи данных, например, test-pod.yaml:
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      namespace: default
    spec:
      volumes:
        - name: csi-data-cinderplugin
          persistentVolumeClaim:
            claimName: <имя PVC>
      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: 80
              protocol: TCP
          resources: {}
          volumeMounts:
            - name: csi-data-cinderplugin
              mountPath: /var/lib/www/html
    где:
  2. Примените созданный манифест:
    kubectl apply -f test-pod.yaml

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

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

kubectl get pvc

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

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

kubectl get pv

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

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

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