Compartilhar via


Armazenamento NFS externo no AKS Edge Essentials

As soluções de armazenamento persistente permitem armazenar dados de aplicativo externos ao pod que executa seu aplicativo e permitem que você mantenha os dados do aplicativo, mesmo que o pod do aplicativo falhe. É possível usar o Provisionador de Caminho Local para armazenamento local; no entanto, o armazenamento depende da disponibilidade do nó. Também é possível separar a disponibilidade de armazenamento do ciclo de vida do nó usando provedores de armazenamento externos.

Este artigo descreve como configurar um provedor NFS e implantar um contêiner de exemplo com um PV conectado a NFS no cluster do AKS Edge Essentials.

Para obter mais informações sobre o plug-in NFS, consulte o nfs-subdir-external-provisioner.

Etapa 1: obter informações de conexão para o servidor NFS

Verifique se o servidor NFS está acessível no cluster do AKS Edge Essentials e obtenha as informações necessárias para se conectar a ele. As informações devem incluir o nome do host do servidor NFS e o caminho de compartilhamento exportado. Se o servidor NFS tiver mecanismos de autenticação, certifique-se de obter essas informações também.

Etapa 2: baixar recursos

Obtenha os modelos de recurso. Para configurar o provisionador, baixe um conjunto de arquivos de modelo YAML, edite-os para adicionar as informações de conexão do servidor NFS e aplique cada arquivo de implantação.

Observação

O exemplo de NFS usado baseia-se no código de exemplo nfs-subdir-external-provisioner e é ajustado para a máquina virtual do AKS Edge Essentials.

  1. Baixe o código-fonte mais recente .zip do repositório do GitHub do AKS-Edge Essentials.

  2. Extraia o tgz para uma pasta desejada.

  3. Abra uma sessão do PowerShell como administrador.

  4. Altere para o diretório de exemplo do NFS: AKS-Edge –> exemplos –> armazenamento –> NFS.

  5. Usando o dir comando , marcar que a pasta NFS tem os seguintes arquivos:

        Directory: C:\Users\AKS-Edge\samples\storage\nfs
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a----         1/25/2023  10:43 AM            345 class.yaml
    -a----         1/25/2023   1:14 PM            979 deployment.yaml
    -a----         1/25/2023   1:16 PM            371 pod.yaml
    -a----         1/25/2023   1:17 PM            218 pvc.yaml
    -a----          1/9/2023  10:19 AM           1900 rbac.yaml
    

Etapa 3: configurar a autorização

Um cluster do AKS Edge Essentials tem o RBAC padrão habilitado, portanto, nenhum outro RBAC precisa ser configurado. No entanto, se você estiver em um namespace/projeto diferente do padrão, edite rbac.yaml antes de implantar o modelo. Em uma janela do PowerShell com privilégios elevados, execute o seguinte cmdlet:

kubectl create -f .\rbac.yaml

Etapa 4: configurar o provisionador externo do subdiretório NFS

Em seguida, edite o arquivo de implantação do provisionador NFS para adicionar informações de conexão ao servidor NFS. Edite deploy/deployment.yaml e substitua os seguintes valores:

  1. Substitua o nome VALUEname: NFS_SERVERdo host do servidor em .

  2. Substitua o nome do host server do servidor em ->nfs.volumes

  3. Substitua o nome VALUEname: NFS_PATHdo host do servidor em .

  4. Substitua o nome do host path do servidor em ->nfs.volumes

  5. Abra uma janela do PowerShell como administrador.

  6. Crie uma pasta a ser usada para volumes persistentes dentro do nó:

    Invoke-AksEdgeNodeCommand -NodeType Linux -command "sudo mkdir /var/persistentVolumes"
    

    Dica

    O guia atual usa a pasta /var/persistenVolumes . Se você quiser alterar a pasta, crie outra pasta de montagem e defina as permissões apropriadas. Além disso, atualize o arquivo deployment.yaml com o novo diretório.

  7. Implante os arquivos YAML necessários:

    kubectl create -f .\class.yaml
    kubectl create -f .\deployment.yaml
    kubectl create -f .\pvc.yaml
    kubectl create -f .\pod.yaml
    

Etapa 5: marcar recursos criados

Se tudo estiver em execução e anexado corretamente, você deverá ver algo semelhante ao seguinte. Primeiro, você deve ver que o PV foi criado usando kubectl get pv:

PS C:\WINDOWS\system32> kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                STORAGECLASS   REASON   AGE
pvc-72dd0e5a-1064-424d-b534-d414b6693aaa   1Mi        RWX            Delete           Bound    default/test-claim   nfs-client              20s

Em seguida, o PVC foi associado usando kubectl get pvc:

PS C:\WINDOWS\system32> kubectl get pvc
NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
nfs-pvc      Bound    pvc-72dd0e5a-1064-424d-b534-d414b6693aaa   1Mi        RWX            nfs-client     25s

Por fim, você deve ver o teste de volume e o nfs-client-provisioner usando kubectl get pods:

PS C:\WINDOWS\system32> kubectl get pods
NAME                                      READY   STATUS      RESTARTS   AGE
nfs-client-provisioner-696845f854-wz5cp   1/1     Running     0          2m
volume-test                               1/1     Running     0          2m

Etapa 6: testar o armazenamento persistente

Um teste final é garantir que o armazenamento seja persistente na unidade conectada ao NFS.

Comece escrevendo algo no pod. Em uma janela do PowerShell com privilégios elevados, execute o seguinte cmdlet:

kubectl exec volume-test -- sh -c "echo Hello AKS Edge! > /data/Test-NFS.txt"

Agora, vá para a unidade compartilhada NFS e marcar para um arquivo chamado Test-NFS.txt. Abra o arquivo e você verá uma linha que diz "Olá AKS Edge!"

Por fim, exclua o pod para simular uma falha de pod ou até mesmo uma implantação que está sendo removida, usando o seguinte cmdlet:

kubectl delete -f .\pod.yaml

Verifique se o pod foi removido e, em seguida, implante o pod de teste de volume novamente:

kubectl apply -f .\pod.yaml

Por fim, leia o conteúdo do arquivo que foi gravado anteriormente. Se tudo tiver sido executado com êxito, você deverá ver a mensagem "Olá AKS Edge!":

kubectl exec volume-test -- sh -c "cat /data/Test-NFS.txt"

Etapa 7: limpo implantação

Quando terminar de usar o armazenamento NFS, acesse o PowerShell e limpo seu workspace executando o seguinte script:

kubectl delete -f .\pod.yaml
kubectl delete -f .\pvc.yaml
kubectl delete -f .\deployment.yaml
kubectl delete -f .\class.yaml

Próximas etapas