Драйверы 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. Если у вас нет подписки Azure, создайте бесплатную учетную запись.
- Установленный Azure CLI.
Установите 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.
Дальнейшие шаги
- Сведения о том, как использовать диск CSI для дисков Azure, см. в разделе Использование дисков Azure с драйверами CSI.
- Сведения о том, как использовать диск CSI для Файлов Azure, см. в разделе Использование Файлов Azure с драйверами CSI.
- Дополнительные сведения и рекомендации по хранению см. в разделе Рекомендации по хранению и резервному копированию в Службе Azure Kubernetes.
- Дополнительные сведения о миграции CSI см. в статье Перенос томов Kubernetes в дереве в CSI.