Compartilhar via


Conectar volumes do Azure Elastic SAN a um cluster do Serviço de Kubernetes do Azure

Este artigo explica como conectar um volume de um Azure Elastic SAN (rede de área de armazenamento) por meio de um cluster do AKS (Serviço de Kubernetes do Azure). Para fazer essa conexão, habilite o driver CSI do Kubernetes iSCSI em seu cluster. Com esse driver, você tem acesso aos volumes em seu Elastic SAN criando volumes persistentes no cluster do AKS e anexando os volumes de Elastic SAN aos volumes persistentes.

Sobre o driver

O driver CSI ISCSI é um projeto código aberto que permite que você se conecte a um cluster do Kubernetes por iSCSI. Como o driver é um projeto código aberto, a Microsoft não fornecerá suporte a nenhum problema decorrente do driver, por si só.

O driver CSI do Kubernetes iSCSI está disponível no GitHub:

Licenciamento

O driver CSI iSCSI para Kubernetes é licenciado sob a licença do Apache 2.0.

Pré-requisitos

Limitações

  • Atualmente, não há suporte para provisionamento dinâmico
  • No momento, há suporte apenas ReadWriteOnce para o modo de acesso

Introdução

Instalação do driver

curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-iscsi/master/deploy/install-driver.sh | bash -s master --

Após a implantação, verifique o status dos pods para verificar se o driver foi instalado.

kubectl -n kube-system get pod -o wide -l app=csi-iscsi-node

Obter informações de volume

Você precisa do StorageTargetIQN, StorageTargetPortalHostName e StorageTargetPortalPort do volume.

Você pode obtê-los com o seguinte comando Azure PowerShell:

Get-AzElasticSanVolume -ResourceGroupName $resourceGroupName -ElasticSanName $sanName -VolumeGroupName $searchedVolumeGroup -Name $searchedVolume 

Você também pode obtê-los com o seguinte comando da CLI do Azure:

az elastic-san volume show --elastic-san-name --name --resource-group --volume-group-name

Configuração do cluster

Depois de recuperar as informações do volume, você precisará criar alguns arquivos yaml para seus novos recursos no cluster do AKS.

Storageclass

Use o exemplo a seguir para criar um arquivo storageclass.yml. Esse arquivo define a classe de armazenamento do volume persistente.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: san-volume
provisioner: manual

Volume persistente

Depois de criar a classe de armazenamento, crie um arquivo pv.yml . Esse arquivo define seu volume persistente. No exemplo a seguir, substitua yourTargetPortal, yourTargetPortalPorte yourIQN pelos valores coletados anteriormente e use o exemplo para criar um arquivo pv.yml . Se você precisar de mais de 1 gibibyte de armazenamento e o tiver disponível, substitua 1Gi pela quantidade de armazenamento necessária.

---
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"

Depois de criar o arquivo pv.yml , crie um volume persistente com o seguinte comando:

kubectl apply -f pathtoyourfile/pv.yaml

Declaração de volume persistente

Criar uma declaração de volume persistente. Use a classe de armazenamento que definimos anteriormente com o volume persistente que definimos. Veja a seguir um exemplo da aparência do arquivo 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"]

Depois de criar o arquivo pvc.yml, crie uma declaração de volume persistente.

kubectl apply -f pathtoyourfile/pvc.yaml

Para verificar se o PersistentVolumeClaim foi criado e associado ao PersistentVolume, execute o seguinte comando:

kubectl get pvc pathtoyourfile 

Por fim, crie um manifesto de pod. Veja a seguir um exemplo da aparência do arquivo pod.yml. Você pode usá-lo para criar seu próprio manifesto de pod, substituir os valores para name, imagee mountPath por seus próprios:

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

Depois de criar o arquivo pod.yml, crie um pod.

kubectl apply -f pathtoyourfile/pod.yaml

Para verificar se o Pod foi criado, execute o seguinte comando:

kubectl get pods  

Agora você conectou com êxito um volume de Elastic SAN ao cluster do AKS.

Próximas etapas

Planejar a implantação de uma Elastic SAN