Share via


Connessione volumi SAN elastici di Azure a un cluster servizio Azure Kubernetes

Questo articolo illustra come connettere un volume di rete SAN (Elastic Storage Area Network) di Azure da un cluster del servizio Azure Kubernetes (Servizio Azure Kubernetes). Per stabilire questa connessione, abilitare il driver CSI iSCSI di Kubernetes nel cluster. Con questo driver, è possibile accedere ai volumi nella rete SAN elastica creando volumi permanenti nel cluster del servizio Azure Kubernetes e quindi collegando i volumi SAN elastici ai volumi permanenti.

Informazioni sul driver

Il driver CSI iSCSI è un progetto open source che consente di connettersi a un cluster Kubernetes tramite iSCSI. Poiché il driver è un progetto open source, Microsoft non fornirà supporto da eventuali problemi derivanti dal driver stesso.

Il driver CSI iSCSI di Kubernetes è disponibile in GitHub:

Licenze

Il driver CSI iSCSI per Kubernetes è concesso in licenza con la licenza Apache 2.0.

Prerequisiti

Limiti

  • Il provisioning dinamico non è attualmente supportato
  • Attualmente è supportata solo ReadWriteOnce la modalità di accesso

Operazioni preliminari

Installazione del driver

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

Dopo la distribuzione, controllare lo stato dei pod per verificare che il driver sia installato.

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

Ottenere informazioni sul volume

Sono necessari i Archiviazione TargetIQN del volume, Archiviazione TargetPortalHostName e Archiviazione TargetPortalPort.

È possibile ottenerli con il comando di Azure PowerShell seguente:

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

È anche possibile ottenerli con il comando seguente dell'interfaccia della riga di comando di Azure:

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

Configurazione del cluster

Dopo aver recuperato le informazioni del volume, è necessario creare alcuni file yaml per le nuove risorse nel cluster del servizio Azure Kubernetes.

Archiviazione classe

Usare l'esempio seguente per creare un file storageclass.yml. Questo file definisce la classe di archiviazione del volume permanente.

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

Volume permanente

Dopo aver creato la classe di archiviazione, creare un file pv.yml . Questo file definisce il volume permanente. Nell'esempio seguente sostituire , e con i valori raccolti in precedenza, quindi usare l'esempio per creare un file pv.yml.yourIQNyourTargetPortalPortyourTargetPortal Se sono necessari più di 1 gibibyte di spazio di archiviazione e renderlo disponibile, sostituire 1Gi con la quantità di spazio di archiviazione necessario.

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

Dopo aver creato il file pv.yml , creare un volume permanente con il comando seguente:

kubectl apply -f pathtoyourfile/pv.yaml

Attestazione di volume permanente

Creare quindi un'attestazione di volume permanente. Usare la classe di archiviazione definita in precedenza con il volume permanente definito. Di seguito è riportato un esempio dell'aspetto del file 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"]

Dopo aver creato il file pvc.yml , creare un'attestazione di volume permanente.

kubectl apply -f pathtoyourfile/pvc.yaml

Per verificare che persistentVolumeClaim sia stato creato e associato a PersistentVolume, eseguire il comando seguente:

kubectl get pvc pathtoyourfile 

Infine, creare un manifesto del pod. Di seguito è riportato un esempio dell'aspetto del file pod.yml . È possibile usarlo per creare un manifesto del pod personalizzato, sostituire i valori per name, imagee mountPath con i propri:

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

Dopo aver creato il file pod.yml , creare un pod.

kubectl apply -f pathtoyourfile/pod.yaml

Per verificare che il pod sia stato creato, eseguire il comando seguente:

kubectl get pods  

A questo punto è stato connesso un volume SAN elastico al cluster del servizio Azure Kubernetes.

Passaggi successivi

Pianificare la distribuzione di una SAN elastica