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