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.
Baixe o código-fonte mais recente .zip do repositório do GitHub do AKS-Edge Essentials.
Extraia o tgz para uma pasta desejada.
Abra uma sessão do PowerShell como administrador.
Altere para o diretório de exemplo do NFS: AKS-Edge –> exemplos –> armazenamento –> NFS.
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:
Substitua o nome
VALUE
name: NFS_SERVER
do host do servidor em .Substitua o nome do host
server
do servidor em ->nfs
.volumes
Substitua o nome
VALUE
name: NFS_PATH
do host do servidor em .Substitua o nome do host
path
do servidor em ->nfs
.volumes
Abra uma janela do PowerShell como administrador.
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.
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