Ansluta Elastiska SAN-volymer i Azure till ett Azure Kubernetes Service-kluster
Den här artikeln beskriver hur du ansluter en SAN-volym (Azure Elastic Storage Area Network) från ett AKS-kluster (Azure Kubernetes Service). För att upprätta den här anslutningen aktiverar du Kubernetes iSCSI CSI-drivrutinen i klustret. Med den här drivrutinen kan du komma åt volymer på elastic SAN genom att skapa beständiga volymer i AKS-klustret och sedan koppla elastiska SAN-volymer till beständiga volymer.
Om drivrutinen
ISCSI CSI-drivrutinen är ett projekt med öppen källkod som gör att du kan ansluta till ett Kubernetes-kluster via iSCSI. Eftersom drivrutinen är ett projekt med öppen källkod kommer Microsoft inte att ge stöd för några problem som härrör från själva drivrutinen.
Kubernetes iSCSI CSI-drivrutinen är tillgänglig på GitHub:
Licensiering
ISCSI CSI-drivrutinen för Kubernetes är licensierad under Apache 2.0-licensen.
Förutsättningar
- Använd antingen den senaste Azure CLI eller installera den senaste Azure PowerShell-modulen
- Uppfylla kompatibilitetskraven för iSCSI CSI-drivrutinen
- Distribuera ett elastiskt SAN
- Konfigurera en slutpunkt för virtuellt nätverk
- Konfigurera regler för virtuellt nätverk
Begränsningar
- Dynamisk etablering stöds inte för närvarande
- Endast
ReadWriteOnce
åtkomstläge stöds för närvarande
Kom igång
Drivrutinsinstallation
curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-iscsi/master/deploy/install-driver.sh | bash -s master --
Efter distributionen kontrollerar du poddstatusen för att kontrollera att drivrutinen har installerats.
kubectl -n kube-system get pod -o wide -l app=csi-iscsi-node
Hämta volyminformation
Du behöver volymens StorageTargetIQN, StorageTargetPortalHostName och StorageTargetPortalPort.
Du kan hämta dem med följande Azure PowerShell-kommando:
Get-AzElasticSanVolume -ResourceGroupName $resourceGroupName -ElasticSanName $sanName -VolumeGroupName $searchedVolumeGroup -Name $searchedVolume
Du kan också hämta dem med följande Azure CLI-kommando:
az elastic-san volume show --elastic-san-name --name --resource-group --volume-group-name
Klusterkonfiguration
När du har hämtat volymens information måste du skapa några yaml-filer för dina nya resurser i AKS-klustret.
Lagringsklass
Använd följande exempel för att skapa en storageclass.yml fil. Den här filen definierar lagringsklassen för den beständiga volymen.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: san-volume
provisioner: manual
Beständiga volymer
När du har skapat lagringsklassen skapar du en pv.yml fil. Den här filen definierar din beständiga volym. I följande exempel ersätter yourTargetPortal
du , yourTargetPortalPort
och yourIQN
med de värden som du samlade in tidigare och använder sedan exemplet för att skapa en pv.yml fil. Om du behöver mer än 1 gibibyte lagringsutrymme och har det tillgängligt ersätter 1Gi
du med den mängd lagringsutrymme som du behöver.
---
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"
När du har skapat pv.yml-filen skapar du en beständig volym med följande kommando:
kubectl apply -f pathtoyourfile/pv.yaml
Beständiga volymanspråk
Skapa sedan ett beständiga volymanspråk. Använd lagringsklassen som vi definierade tidigare med den beständiga volymen som vi definierade. Följande är ett exempel på hur din pvc.yml fil kan se ut:
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"]
När du har skapat pvc.yml-filen skapar du ett beständigt volymanspråk.
kubectl apply -f pathtoyourfile/pvc.yaml
Kontrollera att PersistentVolumeClaim har skapats och är bunden till PersistentVolume genom att köra följande kommando:
kubectl get pvc pathtoyourfile
Skapa slutligen ett poddmanifest. Följande är ett exempel på hur din pod.yml fil kan se ut. Du kan använda det för att skapa ett eget poddmanifest, ersätta värdena för name
, image
och mountPath
med ditt eget:
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
När du har skapat pod.yml-filen skapar du en podd.
kubectl apply -f pathtoyourfile/pod.yaml
Kontrollera att podden har skapats genom att köra följande kommando:
kubectl get pods
Nu har du anslutit en elastisk SAN-volym till ditt AKS-kluster.