Подключение томов Azure Elastic SAN к кластеру Служба Azure Kubernetes
В этой статье объясняется, как подключить том области хранения Эластичных баз данных Azure (SAN) из кластера Служба Azure Kubernetes (AKS). Чтобы сделать это подключение, включите драйвер Kubernetes iSCSI CSI в кластере. С помощью этого драйвера вы можете получить доступ к томам в эластичной сети SAN, создав постоянные тома в кластере AKS, а затем подключив тома Elastic SAN к постоянным томам.
Сведения о драйвере
Драйвер ISCSI CSI — это проект открытый код, который позволяет подключаться к кластеру Kubernetes через iSCSI. Так как драйвер является проектом открытый код, корпорация Майкрософт не будет предоставлять поддержку от каких-либо проблем, связанных с драйвером, сам по себе.
Драйвер CSI iSCSI Kubernetes доступен на сайте GitHub:
Лицензирование
Драйвер ISCSI CSI для Kubernetes лицензирован в соответствии с лицензией Apache 2.0.
Необходимые компоненты
- Используйте последнюю версию Azure CLI или установите последний модуль Azure PowerShell
- Соответствие требованиям совместимости для драйвера CSI iSCSI
- Развертывание эластичной сети SAN
- Настройка конечной точки виртуальной сети
- Настройка правил виртуальной сети
Ограничения
- Динамическая подготовка в настоящее время не поддерживается
- В настоящее время поддерживается только
ReadWriteOnce
режим доступа
Начало работы
Установка драйвера
curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-iscsi/master/deploy/install-driver.sh | bash -s master --
После развертывания проверьте состояние pod, чтобы убедиться, что драйвер установлен.
kubectl -n kube-system get pod -o wide -l app=csi-iscsi-node
Получение сведений о томе
Вам потребуется storageTargetIQN, StorageTargetPortalHostName и StorageTargetPortalPort.
Их можно получить с помощью следующей команды Azure PowerShell:
Get-AzElasticSanVolume -ResourceGroupName $resourceGroupName -ElasticSanName $sanName -VolumeGroupName $searchedVolumeGroup -Name $searchedVolume
Вы также можете получить их с помощью следующей команды Azure CLI:
az elastic-san volume show --elastic-san-name --name --resource-group --volume-group-name
Конфигурация кластера
После получения сведений о томе необходимо создать несколько yaml-файлов для новых ресурсов в кластере AKS.
Класс storageclass
Используйте следующий пример, чтобы создать файл storageclass.yml. Этот файл определяет класс хранилища постоянного тома.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: san-volume
provisioner: manual
Постоянный том
После создания класса хранилища создайте файл pv.yml . Этот файл определяет постоянный том. В следующем примере замените yourTargetPortal
и yourTargetPortalPort
yourIQN
на значения, собранные ранее, используйте пример для создания файла pv.yml. Если требуется более 1 гибибайта хранилища и оно доступно, замените 1Gi
нужным объемом хранилища.
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: iscsiplugin-pv
labels:
name: data-iscsiplugin
spec:
storageClassName: san-volume
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
csi:
driver: iscsi.csi.k8s.io
volumeHandle: iscsi-data-id
volumeAttributes:
targetPortal: "yourTargetPortal:yourTargetPortalPort"
portals: "[]"
iqn: "yourIQN"
lun: "0"
iscsiInterface: "default"
discoveryCHAPAuth: "true"
sessionCHAPAuth: "false"
После создания файла pv.yml создайте постоянный том со следующей командой:
kubectl apply -f pathtoyourfile/pv.yaml
Утверждение постоянного тома
Затем создайте утверждение постоянного тома. Используйте класс хранилища, определенный ранее, с заданным постоянным томом. Ниже приведен пример того, как может выглядеть файл pvc.yml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: iscsiplugin-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: san-volume
selector:
matchExpressions:
- key: name
operator: In
values: ["data-iscsiplugin"]
Создав файл pvc.yml, создайте утверждение постоянного тома.
kubectl apply -f pathtoyourfile/pvc.yaml
Чтобы убедиться, что PersistentVolumeClaim успешно создан и сопоставлен с PersistentVolume, выполните следующую команду:
kubectl get pvc pathtoyourfile
Наконец, создайте манифест pod. Ниже приведен пример того, как может выглядеть файл pod.yml . Его можно использовать для создания собственного манифеста pod, замены значений для name
, image
а также mountPath
собственного:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: maersk/nginx
imagePullPolicy: Always
name: nginx
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- mountPath: /var/www
name: iscsi-volume
volumes:
- name: iscsi-volume
persistentVolumeClaim:
claimName: iscsiplugin-pvc
Создав файл pod.yml , создайте модуль pod.
kubectl apply -f pathtoyourfile/pod.yaml
Чтобы проверить создание pod, выполните следующую команду:
kubectl get pods
Теперь вы успешно подключили том Elastic SAN к кластеру AKS.