Как установить драйвер интерфейса хранения данных контейнера Kubernetes

Когда вы хотите работать с хранилищем внутри Kubernetes, например, использовать тома, вам нужен способ «общения» с этими томами. Таким образом, вы сможете делать такие вещи, как хранение данных Pod на жестком диске или приложения с состоянием.

В этой статье блога вы узнаете о том, что такое CSI и как реализовать драйвер CSI в вашем кластере Kubernetes.

Что такое CSI?

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

С помощью CSI можно взаимодействовать с хранилищем на локальном сервере или даже за пределами самого кластера. Например, существует CSI для взаимодействия с Azure Storage и CSI для взаимодействия с AWS S3. CSI позволяют вам использовать Azure Storage или AWS S3 для хранения данных Pod. Таким образом, если Pod исчезнет (поскольку они эфемерны), данные все еще будут существовать.

Что CSI действительно делает для поставщиков, таких как Azure и AWS, так это предоставляет им стандартный способ предоставления ресурсов хранения Kubernetes. Таким образом, Kubernetes может использовать хранилище.

Существует множество CSI, причем не только для облака. Например, есть CSI для NetApp.

По определению, интерфейс контейнерного хранилища — это стандарт для предоставления произвольных блочных и файловых систем хранения контейнерным рабочим нагрузкам.

До появления CSI

Даже до появления интерфейсов Container Storage Interfaces можно было взаимодействовать с томами и поставщиками, имеющими решения для хранения данных. Самая большая проблема заключалась в том, что для этого в сам релиз Kubernetes, то есть в код основной платформы, необходимо было включить интерфейс. Без него интерфейс хранения не работал бы. Этот вариант назывался «in-tree». Например, если поставщик находил ошибку в интерфейсе хранения, ему приходилось ждать нового релиза Kubernetes, чтобы донести исправление до пользователей. Это было хлопотно для поставщиков, но это также было хлопотно для сопровождающих Kubernetes, поскольку им приходилось выполнять тонну дополнительной работы по управлению интерфейсами хранения.

С CSI все эти проблемы исчезли. В рамках подхода, который теперь называется «out-tree», поставщики могут создавать свои собственные интерфейсы хранения и выпускать их вне основного кода платформы Kubernetes, что дает им возможность управлять и поддерживать свои собственные циклы выпуска. Единственное, что они должны обеспечить — это следовать стандартам и требованиям CSI при создании CSI.

Установка драйвера CSI

Теперь, когда вы знаете, почему вы хотите использовать CSI, давайте узнаем, как с ними работать.

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

Например, вы можете установить драйвер CSI в AKS с помощью следующей команды:

az aks update -n myAKSCluster -g myResourceGroup --enable-disk-driver --enable-file-driver --enable-snapshot-controller
Войти в полноэкранный режим Выйти из полноэкранного режима

Вы можете установить драйвер CSI для EKS с помощью следующей команды:

eksctl create addon --name aws-ebs-csi-driver --cluster my-cluster --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_EBS_CSI_DriverRole --force
Войти в полноэкранный режим Выйти из полноэкранного режима

Вы можете установить драйвер CSI для GKE с помощью следующей команды:

gcloud container clusters create CLUSTER-NAME 
    --addons=GcePersistentDiskCsiDriver 
    --cluster-version=VERSION
Войти в полноэкранный режим Выйти из полноэкранного режима

Как вы можете видеть, это зависит от производителя. Лучшее, что вы можете сделать, это буквально набрать в Google «how to install CSI for xvendor».

Вот список драйверов, которые в настоящее время поддерживаются: https://kubernetes-csi.github.io/docs/drivers.html.

Хорошая новость заключается в том, что есть одна вещь, которая в основном всегда будет одинаковой — как вы используете CSI. Способ использования CSI заключается в создании StorageClass внутри вашего кластера Kubernetes, указывающего на CSI.

Например, вот как это будет выглядеть для Azure.

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: custom-managed-premium
provisioner: disk.csi.azure.com
reclaimPolicy: Delete
parameters:
  storageAccountType: Premium_LRS
Вход в полноэкранный режим Выход из полноэкранного режима

А вот как это будет выглядеть для AWS

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: gp2
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
  fsType: ext4
Войти в полноэкранный режим Выход из полноэкранного режима

Как вы можете видеть, здесь используется тот же kind наряду с API spec и аналогичными картами.

При использовании CSI необходимо помнить две вещи:

  • Обязательно изучите, как установить драйвер CSI для конкретного производителя.
  • Убедитесь, что вы инициализируете драйвер CSI с помощью StorageClass.

Вот так вы можете начать работу с CSI! Спасибо за чтение.

Оцените статью
devanswers.ru
Добавить комментарий