Драйверы Container Storage Interface (CSI) в Службе Azure Kubernetes (AKS)

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

Поддержка драйверов хранилища CSI в AKS позволяет свободно использовать:

  • Диски Azure можно использовать для создания ресурсов DataDisk в Kubernetes. Диски могут использовать службу хранилища Azure ценовой категории "Премиум" на основе высокопроизводительных твердотельных накопителей или службу хранилища Azure ценовой категории "Стандартный" на основе обычных жестких дисков или стандартных твердотельных накопителей. Для большинства рабочих нагрузок, связанных с производством и разработкой, следует использовать службу хранилища ценовой категории "Премиум". Диски Azure подключаются в режиме ReadWriteOnce и доступны только одному модулю pod. Для томов хранилища, к которым одновременно могут обращаться несколько pod, следует использовать Файлы Azure.
  • Файлы Azure можно использовать для подключения к элементам pod общей папки SMB 3.0/3.1, размещенной в учетной записи хранения Azure. Файлы Azure обеспечивают обмен данными между нескольким узлам и pod. Файлы Azure могут использовать службу хранилища Azure ценовой категории "Стандартный" на основе обычных жестких дисков или службу хранилища Azure ценовой категории "Премиум" на основе высокопроизводительных твердотельных накопителей.

Важно!

Начиная с версии Kubernetes 1.21 AKS использует только драйверы CSI по умолчанию, а миграция CSI включена. Существующие в дереве постоянные тома будут продолжать функционировать. Однако с внутренней точки зрения Kubernetes передает все операции управления хранилищем (ранее ориентированные на драйверы в дереве) драйверам CSI.

Драйверы в дереве относятся к драйверам хранилища, которые входят в основной код Kubernetes, в отличие от драйверов CSI, которые представляют собой подключаемые модули.

Примечание

Драйвер CSI для дисков Azure версии 2 (предварительная версия) повышает масштабируемость и уменьшает задержку отработки отказа pod. Он использует общие диски для подготовки реплик вложений на нескольких узлах кластера и интегрируется с планировщиком pod, чтобы обеспечить выбор узла с репликой вложения при отработке отказа pod. Драйвер CSI для дисков Azure версии 2 (предварительная версия) также обеспечивает возможность точной настройки производительности. Если вы заинтересованы в участии в предварительной версии, отправьте запрос: https://aka.ms/DiskCSIv2Preview. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, поэтому возможны критические изменения на этапе предварительной версии. Предварительная версия не рекомендуется для рабочих нагрузок в рабочей среде. Дополнительные сведения см. в статье Дополнительные условия использования предварительных выпусков Microsoft Azure.

Примечание

AKS предоставляет возможность включать и отключать драйверы CSI (предварительная версия) в новых и существующих кластерах. Драйверы CSI включены по умолчанию в новых кластерах. Перед выполнением этой команды в существующем кластере необходимо убедиться в отсутствии существующих постоянных томов, созданных дисками Azure и драйверами CSI Файлов Azure, а также в отсутствии существующих ресурсов VolumeSnapshot, VolumeSnapshotClass или VolumeSnapshotContent. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, поэтому возможны критические изменения на этапе предварительной версии. Предварительная версия не рекомендуется для рабочих нагрузок в рабочей среде. Дополнительные сведения см. в статье Дополнительные условия использования предварительных выпусков Microsoft Azure.

Предварительные требования

Установите Azure CLI aks-preview.

Вам также понадобиться расширение Azure CLI aks-preview версии 0.5.78 или более поздней. Установите расширение aks-preview для Azure CLI, используя команду az extension add. Или установите все доступные обновления с помощью команды az extension update.

# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview

Отключение драйверов хранилища CSI в новом кластере

--disable-disk-driver позволяет отключить драйвер CSI для дисков Azure. --disable-file-driver позволяет отключить драйвер CSI для Файлов Azure. --disable-snapshot-controller позволяет отключить контроллер моментальных снимков.

Чтобы отключить драйверы хранилища CSI в новом кластере, используйте --disable-disk-driver, --disable-file-driver и --disable-snapshot-controller.

az aks create -n myAKSCluster -g myResourceGroup --disable-disk-driver --disable-file-driver --disable-snapshot-controller 

Отключение драйверов хранилища CSI в существующем кластере

Чтобы отключить драйверы хранилища CSI в существующем кластере, используйте --disable-disk-driver, --disable-file-driver и --disable-snapshot-controller.

az aks update -n myAKSCluster -g myResourceGroup --disable-disk-driver --disable-file-driver --disable-snapshot-controller 

Включение драйверов хранилища CSI в существующем кластере

--enable-disk-driver позволяет включить драйвер CSI для дисков Azure. --enable-file-driver позволяет включить драйвер CSI для Файлов Azure. --enable-snapshot-controller позволяет включить контроллер моментальных снимков.

Чтобы включить драйверы хранилища CSI в существующем кластере с отключенными драйверами хранилища CSI, используйте --enable-disk-driver, --enable-file-driver и --enable-snapshot-controller.

az aks update -n myAKSCluster -g myResourceGroup --enable-disk-driver --enable-file-driver --enable-snapshot-controller

Перенос пользовательских классов хранения в дереве в CSI

Если вы создали классы хранения драйвера в дереве, эти классы продолжат функционировать, так как миграция CSI включается после обновления кластера до версии 1.21.x. Если же вы хотите использовать функции CSI, необходимо выполнить миграцию.

При миграции существующие классы хранения удаляются, а затем создаются повторно со средством подготовки disk.csi.azure.com при использовании дисков Azure или средством подготовки files.csi.azure.com при использовании Файлов Azure.

Миграция средства подготовки классов хранения

В следующем примере манифеста YAML показано различие между определением класса хранилища в дереве, настроенным для использования дисков Azure, и его эквивалентом на основе определения класса хранения CSI. Система хранения CSI поддерживает те же возможности, что и драйверы в дереве, поэтому требуется изменить только значение provisioner.

Исходное определение класса хранения в дереве

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: custom-managed-premium
provisioner: kubernetes.io/azure-disk
reclaimPolicy: Delete
parameters:
  storageAccountType: Premium_LRS

Определение класса хранения CSI

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: custom-managed-premium
provisioner: disk.csi.azure.com
reclaimPolicy: Delete
parameters:
  storageAccountType: Premium_LRS

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

Миграция постоянных томов в дереве

Важно!

Если в качестве политики reclaimPolicy для постоянного тома в дереве выбрано Delete, для сохранения данных ее необходимо изменить на Retain. Это можно сделать с помощью операции исправления постоянного тома. Пример:

kubectl patch pv pv-azuredisk --type merge --patch '{"spec": {"persistentVolumeReclaimPolicy": "Retain"}}'

Миграция постоянных томов Диска Azure в дереве

При наличии постоянных томов Дисков Azure в дереве получите из них diskURI, а затем воспользуйтесь этим руководством, чтобы настроить постоянные тома на основе драйвера CSI

Миграция постоянных томов Файлов Azure в дереве

При наличии постоянных томов Файлов Azure в дереве получите secretName, shareName из них, а затем следуйте этому руководству, чтобы настроить постоянные тома на основе драйвера CSI.

Дальнейшие шаги