Condividi tramite


Connettere i volumi SAN di Elastic in Azure a un cluster del servizio Azure Kubernetes

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

Informazioni sul driver

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

Il driver CSI iSCSI per Kubernetes è disponibile in GitHub:

Licenze

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

Prerequisiti

Limiti

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

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 StorageTargetIQN, StorageTargetPortalHostName e StorageTargetPortalPort del volume.

È 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.

StorageClass

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 yourTargetPortal, yourTargetPortalPort e yourIQN con i valori raccolti in precedenza, quindi usare l'esempio per creare un file pv.yml. Se sono necessari più di 1 gibibyte di spazio di archiviazione e sono disponibili, 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 al 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, sostituendo ii 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 è stato creato, eseguire il comando seguente:

kubectl get pods  

A questo punto un volume SAN di Elastic è connesso al cluster del servizio Azure Kubernetes.

Passaggi successivi

Pianificare la distribuzione di una SAN di Elastic