connecter des volumes Azure Elastic SAN à un cluster Azure Kubernetes Service
Cet article explique comment connecter un volume Azure Elastic réseau de zone de stockage (SAN) à partir d’un cluster Azure Kubernetes Service (AKS). Pour établir cette connexion, activez le pilote CSI iSCSI Kubernetes sur votre cluster. Avec ce pilote, vous pouvez accéder aux volumes sur votre Elastic SAN en créant des volumes persistants sur votre cluster AKS, puis en attachant les volumes Elastic SAN aux volumes persistants.
À propos du pilote
Le pilote CSI iSCSI est un projet open source qui vous permet de vous connecter à un cluster Kubernetes via iSCSI. Étant donné que le pilote est un projet open source, Microsoft ne fournit pas de support pour les problèmes venant du pilote lui-même.
Le pilote CSI iSCSI Kubernetes est disponible sur GitHub :
Licence
Le pilote CSI iSCSI pour Kubernetes est concédé sous la licence Apache 2.0.
Prérequis
- Utiliser la dernière version d’Azure CLI ou installer le dernier module Azure PowerShell.
- Répondre aux besoins de compatibilité pour le pilote CSI iSCSI
- Déployer un Elastic SAN
- Configurer un point de terminaison de réseau virtuel
- Configurer des règles de réseau virtuel
Limites
- Le provisionnement dynamique n’est pas pris en charge actuellement
- Seul le mode d’accès
ReadWriteOnce
est actuellement pris en charge
Bien démarrer
Installation du pilote
curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-iscsi/master/deploy/install-driver.sh | bash -s master --
Après le déploiement, observez l’état des pods pour vérifier que le pilote est installé.
kubectl -n kube-system get pod -o wide -l app=csi-iscsi-node
Obtenir des informations sur le volume
Vous avez besoin des éléments StorageTargetIQN, StorageTargetPortalHostName et StorageTargetPortalPort du volume.
Vous pouvez les obtenir à l’aide de la commande Azure PowerShell suivante :
Get-AzElasticSanVolume -ResourceGroupName $resourceGroupName -ElasticSanName $sanName -VolumeGroupName $searchedVolumeGroup -Name $searchedVolume
Vous pouvez également les obtenir à l’aide de la commande CLI Azure suivante :
az elastic-san volume show --elastic-san-name --name --resource-group --volume-group-name
Configuration de clusters
Une fois que vous avez récupéré les informations de votre volume, vous devez créer quelques fichiers yaml pour les nouvelles ressources sur votre cluster AKS.
Storageclass
Utilisez l’exemple suivant pour créer un fichier storageclass.yml. Ce fichier définit la classe de stockage de votre volume persistant.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: san-volume
provisioner: manual
Volume persistant
Une fois que vous avez créé la classe de stockage, créez un fichier pv.yml. Ce fichier définit votre volume persistant. Dans l’exemple suivant, remplacez yourTargetPortal
, yourTargetPortalPort
et yourIQN
par les valeurs que vous avez collectées précédemment, puis utilisez l’exemple pour créer un fichier pv.yml. Si vous avez besoin de plus de 1 gibioctet de stockage et que vous l’avez à disposition, remplacez 1Gi
par la quantité de stockage qu’il vous faut.
---
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"
Après avoir créé le fichier pv.yml, créez un volume persistant avec la commande suivante :
kubectl apply -f pathtoyourfile/pv.yaml
Revendication de volume persistant
Ensuite, créez une revendication de volume persistant. Utilisez la classe de stockage que nous avons définie précédemment avec le volume persistant que nous avons également défini. Voici un exemple de ce à quoi votre fichier pvc.yml peut ressembler :
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"]
Après avoir créé le fichier pvc.yml, créez une revendication de volume persistant.
kubectl apply -f pathtoyourfile/pvc.yaml
Vérifiez que votre PersistentVolumeClaim est créé et lié au PersistentVolume.
kubectl get pvc pathtoyourfile
Enfin, créez un manifeste de pod. Voici un exemple de ce à quoi votre fichier pod.yml peut ressembler. Vous pouvez l’utiliser pour créer votre propre manifeste de pod en remplaçant les valeurs name
, image
et mountPath
par les vôtres :
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
Après avoir créé le fichier pod.yml, créez un pod.
kubectl apply -f pathtoyourfile/pod.yaml
Pour vérifier que votre pod a été créé, exécutez la commande suivante :
kubectl get pods
Vous avez maintenant connecté un volume Elastic SAN sur votre cluster AKS.