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:
- Repository mit dem Kubernetes-iSCSI-CSI-Treiber
- Infodatei
- Melden von Problemen mit dem iSCSI-Treiber
Lizenzierung
Der iSCSI-CSI-Treiber für Kubernetes ist unter der Apache 2.0-Lizenz lizenziert.
Voraussetzungen
- Verwenden Sie entweder die neueste Version der Azure CLI, oder installieren Sie das neueste Azure PowerShell-Modul.
- Erfüllung der Kompatibilitätsanforderungen für den iSCSI-CSI-Treiber
- Bereitstellen einer Elastic SAN-Instanz
- Konfigurieren eines virtuellen Netzwerkendpunkts
- Konfigurieren von Regeln für virtuelle Netzwerke
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.