Usar drivers de arquivo CSI (Interface de Armazenamento de Contêiner) no AKS habilitado pelo Azure Arc

> Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server, AKS no Azure Stack HCI 23H2

Este artigo descreve como usar drivers csi (Interface de Armazenamento de Contêiner) para arquivos para montar um SMB (Bloco de Mensagens do Servidor) ou compartilhamentos NFS quando vários nós precisam de acesso simultâneo ao mesmo volume de armazenamento no AKS habilitado pelo Azure Arc.

Visão geral do CSI no AKS Arc

A CSI (Interface de Armazenamento de Contêiner) é um padrão para expor sistemas de blocos e de armazenamento de arquivos arbitrários a cargas de trabalho em contêineres no Kubernetes. Usando CSI, o AKS habilitado pelo Arc pode gravar, implantar e iterar plug-ins para expor novos sistemas de armazenamento. O uso do CSI também pode melhorar os existentes no Kubernetes sem precisar tocar no código principal do Kubernetes e aguardar seus ciclos de lançamento.

Os drivers CSI de disco e arquivo usados pelo AKS Arc são drivers em conformidade com a especificação csi.

O suporte ao driver de armazenamento CSI no AKS Arc permite que você use:

  • Discos do AKS Arc que você pode usar para criar um recurso do Kubernetes DataDisk . Eles são montados como ReadWriteOnce, portanto, eles só estão disponíveis para um único pod por vez. Para volumes de armazenamento que podem ser acessados por vários pods simultaneamente, use arquivos AKS Arc.

  • Arquivos do AKS Arc que você pode usar para montar um compartilhamento SMB ou NFS em pods. Eles são montados como ReadWriteMany, para que você possa compartilhar dados entre vários nós e pods. Eles também podem ser montados como ReadWriteOnce com base na especificação PVC (declaração de volume persistente).

Usar volumes persistentes de arquivos usando drivers CSI ReadWriteMany

Se vários nós precisarem de acesso simultâneo aos mesmos volumes de armazenamento no AKS Arc, você poderá usar drivers CSI para arquivos para montar compartilhamentos SMB ou NFS como ReadWriteMany. Você deve provisionar os compartilhamentos SMB ou NFS com antecedência.

Usar drivers SMB

  1. Verifique se o driver SMB está implantado. O driver CSI do SMB é instalado por padrão quando você cria um cluster do Kubernetes usando o portal do Azure ou o az aksarc create comando . Se você criar um cluster do Kubernetes usando --disable-smb-drivero , deverá habilitar o driver SMB neste cluster usando o az aksarc update comando :

    az aksarc update -n $aksclustername -g $resource_group --enable-smb-driver
    
  1. Crie segredos do Kubernetes para armazenar as credenciais necessárias para acessar compartilhamentos SMB executando o seguinte comando:

    kubectl create secret generic smbcreds --from-literal username=$username --from-literal password=$password --from-literal domain=$domain
    
  2. Crie uma classe de armazenamento usando kubectl para criar uma nova classe de armazenamento SMB com o seguinte manifesto:

    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
    

Usar drivers NFS

  1. Verifique se o driver NFS está implantado. O driver CSI do NFS é instalado por padrão quando você cria um cluster do Kubernetes usando o portal do Azure ou o az aksarc create comando . Se você criar um cluster do Kubernetes usando --disable-nfs-drivero , deverá habilitar o driver NFS neste cluster usando o az aksarc update comando :

    az aksarc update -n $aksclustername -g $resource_group --enable-nfs-driver
    
  1. Crie uma classe de armazenamento NFS usando o seguinte manifesto:

    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
    

Para desinstalar drivers SMB ou NFS

Use os seguintes comandos da CLI do Azure para desinstalar os drivers SMB ou NFS:

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

Próximas etapas