Поделиться через


Подключение томов 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.

Необходимые компоненты

Ограничения

  • Динамическая подготовка в настоящее время не поддерживается
  • В настоящее время поддерживается только 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и yourTargetPortalPortyourIQN на значения, собранные ранее, используйте пример для создания файла 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.

Следующие шаги

Планирование развертывания эластичной сети SAN