Elastische SAN-volumes van Azure verbinden met 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:
- Opslagplaats voor Kubernetes iSCSI CSI-stuurprogramma
- Leesmij
- Problemen met iSCSI-stuurprogramma melden
Licenties
Het iSCSI CSI-stuurprogramma voor Kubernetes heeft een licentie onder de Apache 2.0-licentie.
Vereisten
- Gebruik de nieuwste Azure CLI of installeer de nieuwste Azure PowerShell-module
- Voldoen aan de compatibiliteitsvereisten voor het iSCSI CSI-stuurprogramma
- Een elastisch SAN implementeren
- Een virtueel netwerkeindpunt configureren
- Regels voor virtuele netwerken configureren
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 , yourTargetPortalPort
en yourIQN
yourTargetPortal
door 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
, image
en 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.