Connettere i volumi SAN di Elastic in Azure a un cluster del servizio Azure Kubernetes
Questo articolo spiega come connettere un volume SAN di Elastic in Azure da un cluster del servizio Azure Kubernetes (AKS). Per stabilire questa connessione, abilitare il driver CSI iSCSI per Kubernetes nel cluster. Con questo driver, è possibile accedere ai volumi nella rete SAN di Elastic creando volumi permanenti nel cluster del servizio Azure Kubernetes e quindi collegando i volumi SAN di Elastic ai volumi permanenti.
Informazioni sul driver
Il driver CSI iSCSI è un progetto open source che consente di connettersi a un cluster di Kubernetes tramite iSCSI. Poiché il driver è un progetto open source, Microsoft non fornirà supporto per eventuali problemi derivanti dal driver stesso.
Il driver CSI iSCSI per Kubernetes è disponibile in GitHub:
- Repository dei driver CSI iSCSI per Kubernetes
- File Leggimi
- Segnalare i problemi relativi al driver iSCSI
Licenze
Il driver CSI iSCSI per Kubernetes è concesso in licenza con la licenza di Apache 2.0.
Prerequisiti
- Installare la versione più recente dell’interfaccia della riga di comando di Azure o la versione più recente del modulo di Azure PowerShell
- Soddisfare i requisiti di compatibilità per il driver CSI iSCSI
- Distribuire una SAN di Elastic
- Configurare un endpoint di rete virtuale
- Configurare le regole di rete virtuale
Limiti
- Il provisioning dinamico non è attualmente supportato
- Attualmente è supportata solo la modalità di accesso
ReadWriteOnce
Operazioni preliminari
Installazione del driver
curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-iscsi/master/deploy/install-driver.sh | bash -s master --
Dopo la distribuzione, controllare lo stato dei pod per verificare che il driver sia installato.
kubectl -n kube-system get pod -o wide -l app=csi-iscsi-node
Ottenere informazioni sul volume
Sono necessari StorageTargetIQN, StorageTargetPortalHostName e StorageTargetPortalPort del volume.
È possibile ottenerli con il comando di Azure PowerShell seguente:
Get-AzElasticSanVolume -ResourceGroupName $resourceGroupName -ElasticSanName $sanName -VolumeGroupName $searchedVolumeGroup -Name $searchedVolume
È anche possibile ottenerli con il comando seguente dell'interfaccia della riga di comando di Azure:
az elastic-san volume show --elastic-san-name --name --resource-group --volume-group-name
Configurazione del cluster
Dopo aver recuperato le informazioni del volume, è necessario creare alcuni file YAML per le nuove risorse nel cluster del servizio Azure Kubernetes.
StorageClass
Usare l'esempio seguente per creare un file storageclass.yml. Questo file definisce la classe di archiviazione del volume permanente.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: san-volume
provisioner: manual
Volume permanente
Dopo aver creato la classe di archiviazione, creare un file pv.yml. Questo file definisce il volume permanente. Nell'esempio seguente sostituire yourTargetPortal
, yourTargetPortalPort
e yourIQN
con i valori raccolti in precedenza, quindi usare l'esempio per creare un file pv.yml. Se sono necessari più di 1 gibibyte di spazio di archiviazione e sono disponibili, sostituire 1Gi
con la quantità di spazio di archiviazione necessario.
---
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"
Dopo aver creato il file pv.yml, creare un volume permanente con il comando seguente:
kubectl apply -f pathtoyourfile/pv.yaml
Attestazione di volume permanente
Creare quindi un'attestazione di volume permanente. Usare la classe di archiviazione definita in precedenza con il volume permanente definito. Di seguito è riportato un esempio dell'aspetto del file 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"]
Dopo aver creato il file pvc.yml, creare un'attestazione di volume permanente.
kubectl apply -f pathtoyourfile/pvc.yaml
Per verificare che PersistentVolumeClaim sia stato creato e associato al PersistentVolume, eseguire il comando seguente:
kubectl get pvc pathtoyourfile
Infine, creare un manifesto del pod. Di seguito è riportato un esempio dell'aspetto del file pod.yml. È possibile usarlo per creare un manifesto del pod personalizzato, sostituendo ii valori per name
, image
e mountPath
con i propri:
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
Dopo aver creato il file pod.yml, creare un pod.
kubectl apply -f pathtoyourfile/pod.yaml
Per verificare che il pod è stato creato, eseguire il comando seguente:
kubectl get pods
A questo punto un volume SAN di Elastic è connesso al cluster del servizio Azure Kubernetes.