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


Подключение томов Azure Elastic SAN к кластеру Azure Kubernetes Service

В этой статье объясняется, как подключить том Azure Elastic 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 . Его можно использовать для создания собственного манифеста пода, заменив значения для 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