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
- Instale a CLI do Azure mais recente ou o módulo do Azure PowerShell mais recente
- Atender aos requisitos de compatibilidade para o driver CSI iSCSI
- Implantar uma Elastic SAN
- Configurar um ponto de extremidade de rede virtual
- Configurar regras de rede virtual
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
, yourTargetPortalPort
e 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
, image
e 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.