Verbinding maken Elastische SAN-volumes van Azure naar een Azure Kubernetes Service-cluster

In dit artikel wordt uitgelegd hoe u een San-volume (Elastic Storage Area Network) verbindt vanuit een AKS-cluster (Azure Kubernetes Service). Als u deze verbinding wilt maken, schakelt u het Kubernetes iSCSI CSI-stuurprogramma in uw cluster in. Met dit stuurprogramma hebt u toegang tot volumes in uw Elastische SAN door permanente volumes op uw AKS-cluster te maken en vervolgens de Elastische SAN-volumes aan de permanente volumes te koppelen.

Over de bestuurder

Het iSCSI CSI-stuurprogramma is een opensource-project waarmee u via iSCSI verbinding kunt maken met een Kubernetes-cluster. Omdat het stuurprogramma een opensource-project is, biedt Microsoft geen ondersteuning voor problemen die afkomstig zijn van het stuurprogramma zelf.

Het Kubernetes iSCSI CSI-stuurprogramma is beschikbaar op GitHub:

Licenties

Het iSCSI CSI-stuurprogramma voor Kubernetes heeft een licentie onder de Apache 2.0-licentie.

Vereisten

Beperkingen

  • Dynamische inrichting wordt momenteel niet ondersteund
  • Alleen ReadWriteOnce de toegangsmodus wordt momenteel ondersteund

Aan de slag

Installatie van stuurprogramma's

curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-iscsi/master/deploy/install-driver.sh | bash -s master --

Controleer na de implementatie de status van de pods om te controleren of het stuurprogramma is geïnstalleerd.

kubectl -n kube-system get pod -o wide -l app=csi-iscsi-node

Volumegegevens ophalen

U hebt de StorageTargetIQN, StorageTargetPortalHostName en StorageTargetPortalPort van het volume nodig.

U kunt ze ophalen met de volgende Azure PowerShell-opdracht:

Get-AzElasticSanVolume -ResourceGroupName $resourceGroupName -ElasticSanName $sanName -VolumeGroupName $searchedVolumeGroup -Name $searchedVolume 

U kunt ze ook ophalen met de volgende Azure CLI-opdracht:

az elastic-san volume show --elastic-san-name --name --resource-group --volume-group-name

Clusterconfiguratie

Nadat u de gegevens van uw volume hebt opgehaald, moet u enkele yaml-bestanden maken voor uw nieuwe resources in uw AKS-cluster.

Storageclass

Gebruik het volgende voorbeeld om een storageclass.yml-bestand te maken. Dit bestand definieert de opslagklasse van uw permanente volume.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: san-volume
provisioner: manual

Permanent volume

Nadat u de opslagklasse hebt gemaakt, maakt u een pv.yml-bestand . Dit bestand definieert uw permanente volume. Vervang in het volgende voorbeeld , yourTargetPortalPorten yourIQNyourTargetPortaldoor de waarden die u eerder hebt verzameld, en gebruik vervolgens het voorbeeld om een pv.yml bestand te maken. Als u meer dan 1 gibibyte aan opslagruimte nodig hebt en deze beschikbaar hebt, vervangt 1Gi u de hoeveelheid opslagruimte die u nodig hebt.

---
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"

Nadat u het pv.yml-bestand hebt gemaakt, maakt u een permanent volume met de volgende opdracht:

kubectl apply -f pathtoyourfile/pv.yaml

Permanente volumeclaim

Maak vervolgens een permanente volumeclaim. Gebruik de opslagklasse die we eerder hebben gedefinieerd met het permanente volume dat we hebben gedefinieerd. Hier volgt een voorbeeld van hoe uw pvc.yml bestand eruit kan zien:

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"]

Nadat u het pvc.yml-bestand hebt gemaakt, maakt u een permanente volumeclaim.

kubectl apply -f pathtoyourfile/pvc.yaml

Voer de volgende opdracht uit om te controleren of uw PersistentVolumeClaim is gemaakt en gebonden aan het PersistentVolume:

kubectl get pvc pathtoyourfile 

Maak ten slotte een podmanifest. Hier volgt een voorbeeld van hoe uw pod.yml bestand eruit kan zien. U kunt het gebruiken om uw eigen podmanifest te maken, de waarden voor name, imageen mountPath door uw eigen:

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

Nadat u het pod.yml-bestand hebt gemaakt, maakt u een pod.

kubectl apply -f pathtoyourfile/pod.yaml

Voer de volgende opdracht uit om te controleren of uw pod is gemaakt:

kubectl get pods  

U hebt nu een elastisch SAN-volume verbonden met uw AKS-cluster.

Volgende stappen

Plannen voor het implementeren van een elastisch SAN