Partilhar via


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

Este artigo explica como conectar um volume de SAN (rede de área de armazenamento elástico) do Azure a partir de um cluster do Serviço Kubernetes do Azure (AKS). Para fazer essa conexão, habilite o driver CSI iSCSI do Kubernetes no cluster. Com esse driver, você pode acessar volumes em sua SAN elástica criando volumes persistentes em seu cluster AKS e, em seguida, anexando os volumes de SAN elástica aos volumes persistentes.

Sobre o motorista

O driver CSI iSCSI é um projeto de código aberto que permite que você se conecte a um cluster Kubernetes sobre iSCSI. Como o driver é um projeto de código aberto, a Microsoft não fornecerá suporte a quaisquer problemas decorrentes do driver em si.

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

Licenciamento

O driver CSI iSCSI para Kubernetes está licenciado sob a licença Apache 2.0.

Pré-requisitos

Limitações

  • O provisionamento dinâmico não é suportado no momento
  • Atualmente, apenas ReadWriteOnce o modo de acesso é suportado

Começar agora

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 sobre o volume

Você precisa do volume StorageTargetIQN, StorageTargetPortalHostName e StorageTargetPortalPort.

Você pode obtê-los com o seguinte comando do 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 seu volume, você precisa criar alguns arquivos yaml para seus novos recursos no cluster AKS.

Classe de armazenamento

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 . Este ficheiro define o seu volume persistente. No exemplo a seguir, substitua yourTargetPortal, yourTargetPortalPorte yourIQN com os valores coletados anteriormente e, em seguida, use o exemplo para criar um arquivo pv.yml . Se você precisar de mais de 1 gibibyte de armazenamento e tê-lo disponível, substitua 1Gi pela quantidade de armazenamento que você precisa.

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

Reivindicação de volume persistente

Em seguida, crie uma declaração de volume persistente. Use a classe de armazenamento que definimos anteriormente com o volume persistente que definimos. Segue-se um exemplo do aspeto do seu ficheiro 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 seu PersistentVolumeClaim foi criado e vinculado ao PersistentVolume, execute o seguinte comando:

kubectl get pvc pathtoyourfile 

Finalmente, crie um manifesto pod. Segue-se um exemplo do aspeto do seu ficheiro pod.yml . Você pode usá-lo para fazer seu próprio manifesto pod, substituir os valores para name, imagee mountPath com o seu próprio:

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 seu Pod foi criado, execute o seguinte comando:

kubectl get pods  

Agora você conectou com êxito um volume SAN elástico ao cluster AKS.

Próximos passos

Planejar a implantação de uma SAN elástica