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

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, yourTargetPortalPortet 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.

Étapes suivantes

Planifier le déploiement d’un Elastic SAN