Dela via


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

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 yourTargetPortaldu , yourTargetPortalPortoch 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, imageoch 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.

Nästa steg

Planera för att distribuera ett elastiskt SAN