Share via


Usare i driver di file CSI (Container Storage Interface) nel servizio Azure Kubernetes abilitato da Azure Arc

> Si applica a: Servizio Azure Kubernetes in Azure Stack HCI 22H2, servizio Azure Kubernetes in Windows Server, servizio Azure Kubernetes in Azure Stack HCI 23H2

Questo articolo descrive come usare i driver CSI (Container Storage Interface) per i file per montare condivisioni SMB (Server Message Block) o NFS quando più nodi necessitano di accesso simultaneo allo stesso volume di archiviazione nel servizio Azure Kubernetes abilitato da Azure Arc.

Panoramica di CSI in AKS Arc

L'interfaccia di archiviazione contenitori (CSI) è uno standard per esporre sistemi di archiviazione di blocchi e file arbitrari ai carichi di lavoro in contenitori in Kubernetes. Usando CSI, il servizio Azure Kubernetes abilitato da Arc può scrivere, distribuire ed eseguire l'iterazione dei plug-in per esporre nuovi sistemi di archiviazione. L'uso di CSI può anche migliorare quelli esistenti in Kubernetes senza dover toccare il codice Kubernetes principale e quindi attendere i cicli di rilascio.

I driver CSI su disco e file usati da AKS Arc sono driver conformi alla specifica CSI.

Il supporto del driver di archiviazione CSI in AKS Arc consente di usare:

  • Dischi Arc del servizio Azure Kubernetes che è possibile usare per creare una risorsa Kubernetes DataDisk . Questi vengono montati come ReadWriteOnce, quindi sono disponibili solo per un singolo pod alla volta. Per i volumi di archiviazione accessibili contemporaneamente da più pod, usare i file Arc del servizio Azure Kubernetes.

  • File Arc del servizio Azure Kubernetes che è possibile usare per montare una condivisione SMB o NFS nei pod. Questi vengono montati come ReadWriteMany, quindi è possibile condividere i dati tra più nodi e pod. Possono anche essere montati come ReadWriteOnce in base alla specifica pvc (attestazione di volume permanente).

Usare volumi persistenti di file con i driver CSI ReadWriteMany

Se più nodi richiedono l'accesso simultaneo agli stessi volumi di archiviazione in AKS Arc, è possibile usare i driver CSI per i file per montare condivisioni SMB o NFS come ReadWriteMany. È necessario effettuare il provisioning delle condivisioni SMB o NFS in anticipo.

Usare i driver SMB

  1. Assicurarsi che il driver SMB sia distribuito. Il driver CSI SMB viene installato per impostazione predefinita quando si crea un cluster Kubernetes usando il portale di Azure o il az aksarc create comando . Se si crea un cluster Kubernetes usando --disable-smb-driver, è necessario abilitare il driver SMB in questo cluster usando il az aksarc update comando :

    az aksarc update -n $aksclustername -g $resource_group --enable-smb-driver
    
  1. Creare segreti Kubernetes per archiviare le credenziali necessarie per accedere alle condivisioni SMB eseguendo il comando seguente:

    kubectl create secret generic smbcreds --from-literal username=$username --from-literal password=$password --from-literal domain=$domain
    
  2. Creare una classe di archiviazione usando kubectl per creare una nuova classe di archiviazione SMB con il manifesto seguente:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: smb-csi
    provisioner: smb.csi.akshci.com
    parameters:
       source: \\smb-server\share
       csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
       csi.storage.k8s.io/node-stage-secret-namespace: "default"
    reclaimPolicy: Retain  # only Retain is supported
    volumeBindingMode: Immediate
    mountOptions:
      - dir_mode=0777
      - file_mode=0777
      - uid=1001
      - gid=1001
    

Usare i driver NFS

  1. Assicurarsi che il driver NFS sia distribuito. Il driver CSI NFS viene installato per impostazione predefinita quando si crea un cluster Kubernetes usando il portale di Azure o il az aksarc create comando . Se si crea un cluster Kubernetes usando --disable-nfs-driver, è necessario abilitare il driver NFS in questo cluster usando il az aksarc update comando :

    az aksarc update -n $aksclustername -g $resource_group --enable-nfs-driver
    
  1. Creare una classe di archiviazione NFS usando il manifesto seguente:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: nfs-csi
    provisioner: nfs.csi.akshci.com
    parameters:
      server: nfs-server.default.svc.cluster.local # NFS server endpoint
      share: / # NFS share path
    reclaimPolicy: Retain
    volumeBindingMode: Immediate
    mountOptions:
      - hard
      - nfsvers=4.1
    

Per disinstallare i driver SMB o NFS

Usare i comandi dell'interfaccia della riga di comando di Azure seguenti per disinstallare i driver SMB o NFS:

az aksarc update -n $aksclustername -g $resource_group --disable-smb-driver
az aksarc update -n $aksclustername -g $resource_group --disable-nfs-driver

Passaggi successivi