Criar manualmente e usar um Servidor NFS (Network File System) Linux com o AKS (Serviço de Kubernetes do Azure)
O compartilhamento de dados entre contêineres é geralmente um componente necessário de serviços e aplicativos baseados em contêiner. Normalmente, você tem vários pods que precisam acessar as mesmas informações em um volume persistente externo. Embora os Arquivos do Azure sejam uma opção, a criação de um Servidor NFS em uma VM do Azure é outra forma de armazenamento compartilhado persistente.
Este artigo mostra como criar um Servidor NFS em uma máquina virtual do Azure Ubuntu e configurar o cluster do AKS com acesso a esse sistema de arquivos compartilhado como um volume persistente.
Antes de começar
Este artigo pressupõe que você tenha o seguinte para dar suporte a esta configuração:
- Um cluster AKS novo ou existente. Se você não tiver um cluster do AKS, para obter diretrizes sobre como criar uma implementação em escala empresarial do AKS, consulte Planejar o design do AKS.
- O cluster do AKS precisa estar na mesma VNet (rede virtual) do Azure ou em uma VNet emparelhada que o servidor NFS. O cluster deve ser criado em uma VNet existente, que pode ser a mesma VNet que a VM do Servidor NFS. As etapas para configuração com uma VNet existente são descritas nos seguintes artigos: Criar cluster do AKS na VNet existente e Conectar redes virtuais com o emparelhamento de VNet.
- Uma máquina virtual Ubuntu Linux do Azure executando a versão 18.04 ou posterior. Para implantar uma VM Linux no Azure, consulte Criar e gerenciar VMs Linux.
Se você implantar o cluster do AKS primeiro, o Azure preencherá automaticamente as configurações da rede virtual ao implantar sua VM do Azure Ubuntu, associando a VM Ubuntu na mesma VNet. Se em vez disso você quiser trabalhar com redes emparelhadas, veja a documentação acima.
Implantar o Servidor NFS em uma máquina virtual
Para implantar um Servidor NFS na máquina virtual do Azure Ubuntu, copie o script Bash a seguir e salve-o no computador local. Substitua o valor da variável AKS_SUBNET pelo valor correto do cluster do AKS, ou o valor padrão especificado abrirá o Servidor NFS para todas as portas e conexões. Neste artigo, o arquivo é nomeado
nfs-server-setup.sh
.#!/bin/bash # This script should be executed on Linux Ubuntu Virtual Machine EXPORT_DIRECTORY=${1:-/export/data} DATA_DIRECTORY=${2:-/data} AKS_SUBNET=${3:-*} echo "Updating packages" apt-get -y update echo "Installing NFS kernel server" apt-get -y install nfs-kernel-server echo "Making data directory ${DATA_DIRECTORY}" mkdir -p ${DATA_DIRECTORY} echo "Making new directory to be exported and linked to data directory: ${EXPORT_DIRECTORY}" mkdir -p ${EXPORT_DIRECTORY} echo "Mount binding ${DATA_DIRECTORY} to ${EXPORT_DIRECTORY}" mount --bind ${DATA_DIRECTORY} ${EXPORT_DIRECTORY} echo "Giving 777 permissions to ${EXPORT_DIRECTORY} directory" chmod 777 ${EXPORT_DIRECTORY} parentdir="$(dirname "$EXPORT_DIRECTORY")" echo "Giving 777 permissions to parent: ${parentdir} directory" chmod 777 $parentdir echo "Appending bound directories into fstab" echo "${DATA_DIRECTORY} ${EXPORT_DIRECTORY} none bind 0 0" >> /etc/fstab echo "Appending localhost and Kubernetes subnet address ${AKS_SUBNET} to exports configuration file" echo "/export ${AKS_SUBNET}(rw,async,insecure,fsid=0,crossmnt,no_subtree_check)" >> /etc/exports echo "/export localhost(rw,async,insecure,fsid=0,crossmnt,no_subtree_check)" >> /etc/exports nohup service nfs-kernel-server restart
O script inicia uma reinicialização do Servidor NFS e, posteriormente, você pode continuar se conectando ao Servidor NFS do cluster do AKS.
Depois de criar a VM Linux, copie o arquivo criado na etapa anterior do computador local para a VM usando o seguinte comando:
scp /path/to/nfs-server-setup.sh username@vm-ip-address:/home/{username}
Depois que o arquivo for copiado, abra uma conexão SSH (Secure Shell) com a VM e execute o seguinte comando:
sudo ./nfs-server-setup.sh
Se a execução falhar devido a um erro de permissão negada, defina a permissão de execução para todos executando o seguinte comando:
chmod +x ~/nfs-server-setup.sh
Conectar o cluster do AKS ao Servidor NFS
Você pode conectar-se ao Servidor NFS do cluster do AKS provisionando um volume persistente e uma declaração de volume persistente que especifica como acessar o volume. É necessário conectar os dois recursos nas mesmas redes virtuais ou nas redes emparelhadas. Para saber como configurar o cluster na mesma VNet, consulte: Criando o cluster do AKS na VNet existente.
Depois que ambos os recursos estiverem na mesma VNet virtual ou em VNets emparelhadas, provisione um volume persistente e uma declaração de volume persistente no cluster do AKS. Os contêineres podem, em seguida, montar a unidade NFS no diretório local.
Crie um manifesto YAML chamado pv-azurefilesnfs.yaml com um PersistentVolume. Por exemplo:
apiVersion: v1 kind: PersistentVolume metadata: name: NFS_NAME labels: type: nfs spec: capacity: storage: 1Gi accessModes: - ReadWriteMany nfs: server: NFS_INTERNAL_IP path: NFS_EXPORT_FILE_PATH
Substitua os valores de NFS_INTERNAL_IP, NFS_NAME e NFS_EXPORT_FILE_PATH pelas configurações reais do Servidor NFS.
Crie um arquivo pvc-azurefilesnfs.yaml com uma PersistentVolumeClaim que usa o PersistentVolume. Por exemplo:
Importante
O valor de storageClassName precisa permanecer uma cadeia de caracteres vazia ou a declaração não funcionará.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: NFS_NAME spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 1Gi selector: matchLabels: type: nfs
Substitua o valor de NFS_NAME pela configuração real do Servidor NFS.
Solução de problemas
Se você não puder se conectar ao servidor de um cluster do AKS, poderá ocorrer o problema de o diretório exportado, ou seu pai, não ter permissões suficientes para acessar a VM do Servidor NFS.
Verifique se o diretório de exportação e seu diretório pai receberam permissões 777.
Você pode verificar as permissões executando o seguinte comando e os diretórios devem ter permissões “drwxrwxrwx”:
ls -l
Próximas etapas
- Para obter as práticas recomendadas associadas, veja Práticas recomendadas para armazenamento e backups no AKS.
- Para saber mais sobre como configurar o Servidor NFS ou para ajudar a depurar problemas, consulte o tutorial a seguir no Tutorial do NFS da comunidade do Ubuntu
Azure Kubernetes Service