Freigeben über


Verbinden von Azure Elastic SAN-Volumes mit einem Azure Kubernetes Service-Cluster

In diesem Artikel erfahren Sie, wie Sie von einem AKS-Cluster (Azure Kubernetes Service) aus eine Verbindung mit einem Azure Elastic SAN-Volume (Storage Area Network) herstellen. Aktivieren Sie hierzu den Kubernetes-iSCSI-CSI-Treiber in Ihrem Cluster. Mit diesem Treiber können Sie auf Volumes in Ihrem Elastic SAN zugreifen, indem Sie persistente Volumes in Ihrem AKS-Cluster erstellen und dann die Elastic SAN-Volumes an die persistenten Volumes anfügen.

Informationen zum Treiber

Der iSCSI-CSI-Treiber ist ein Open-Source-Projekt, das es Ihnen ermöglicht, über iSCSI eine Verbindung mit einem Kubernetes-Cluster herzustellen. Da es sich bei dem Treiber um ein Open-Source-Projekt handelt, bietet Microsoft keinen Support bei Problemen, die auf den Treiber zurückzuführen sind.

Der Kubernetes-iSCSI-CSI-Treiber ist auf GitHub verfügbar:

Lizenzierung

Der iSCSI-CSI-Treiber für Kubernetes ist unter der Apache 2.0-Lizenz lizenziert.

Voraussetzungen

Begrenzungen

  • Derzeit wird keine dynamische Bereitstellung unterstützt.
  • Derzeit wird nur der Zugriffsmodus ReadWriteOnce unterstützt.

Erste Schritte

Treiberinstallation

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

Überprüfen Sie nach der Bereitstellung den Status der Pods, um sich zu vergewissern, dass der Treiber installiert wurde.

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

Abrufen von Volumeinformationen

Sie benötigen „StorageTargetIQN“, „StorageTargetPortalHostName“ und „StorageTargetPortalPort“ des Volumes.

Sie können diese mit dem folgenden Azure PowerShell-Befehl abrufen:

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

Sie können sie auch mit dem folgenden Azure CLI-Befehl abrufen:

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

Clusterkonfiguration

Nachdem Sie die Informationen Ihres Volumes abgerufen haben, müssen Sie einige YAML-Dateien für Ihre neuen Ressourcen in Ihrem AKS-Cluster erstellen.

Speicherklasse

Verwenden Sie das folgende Beispiel, um eine Datei vom Typ „storageclass.yml“ zu erstellen. Diese Datei definiert die Speicherklasse Ihres persistenten Volumes.

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

Persistentes Volume

Erstellen Sie nach Erstellung der Speicherklasse eine Datei vom Typ pv.yml. Diese Datei definiert Ihr persistentes Volume. Ersetzen Sie im folgenden Beispiel yourTargetPortal, yourTargetPortalPort und yourIQN durch die zuvor gesammelten Werte, und verwenden Sie dann das Beispiel, um eine Datei vom Typ pv.yml zu erstellen. Wenn Sie mehr als 1 Gibibyte Speicher benötigen und über genügend Speicherplatz verfügen, ersetzen Sie 1Gi durch die erforderliche Speichermenge.

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

Erstellen Sie nach Erstellung der Datei pv.yml ein persistentes Volume mithilfe des folgenden Befehls:

kubectl apply -f pathtoyourfile/pv.yaml

Anspruch auf persistentes Volume

Erstellen Sie als Nächstes einen Anspruch auf ein persistentes Volume. Verwenden Sie die zuvor definierte Speicherklasse mit dem zuvor definierten persistenten Volume. Hier sehen Sie ein Beispiel für eine Datei vom Typ „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"]

Erstellen Sie nach Erstellung der Datei pvc.yml einen Anspruch auf ein persistentes Volumes.

kubectl apply -f pathtoyourfile/pvc.yaml

Führen Sie den folgenden Befehl aus, um sich zu vergewissern, dass PersistentVolumeClaim erstellt und an PersistentVolume gebunden wurde:

kubectl get pvc pathtoyourfile 

Erstellen Sie abschließend ein Podmanifest. Hier sehen Sie ein Beispiel für eine Datei vom Typ pod.yml. Sie kann zur Erstellung eines eigenen Podmanifests verwendet werden. Ersetzen Sie dazu die Werte für name, image und mountPath durch Ihre eigenen Werte:

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

Erstellen Sie nach Erstellung der Datei pod.yml einen Pod.

kubectl apply -f pathtoyourfile/pod.yaml

Führen Sie den folgenden Befehl aus, um sich zu vergewissern, dass der Pod erstellt wurde:

kubectl get pods  

Sie haben nun erfolgreich ein Elastic SAN-Volume mit Ihrem AKS-Cluster verbunden.

Nächste Schritte

Planen der Bereitstellung von Elastic SAN