Criar e usar manualmente um servidor Linux NFS (Network File System) com o Serviço Kubernetes do Azure (AKS)
O compartilhamento de dados entre contêineres geralmente é um componente necessário de serviços e aplicativos baseados em contêineres. Você geralmente 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 mostrará como criar um Servidor NFS em uma máquina virtual do Azure Ubuntu e configurar seu cluster 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 essa configuração:
- Um cluster AKS existente. Se você não tiver um cluster AKS, para obter orientação sobre como projetar uma implementação em escala empresarial do AKS, consulte Planejar seu design AKS.
- Seu cluster AKS precisa estar na mesma rede virtual (VNet) do Azure ou emparelhada que o Servidor NFS. O cluster deve ser criado em uma VNet existente, que pode ser a mesma VNet que sua VM do Servidor NFS. As etapas para configurar com uma VNet existente são descritas nos seguintes artigos: criando AKS Cluster em VNET existente e conectando redes virtuais com emparelhamento VNET.
- Uma máquina virtual do Azure Ubuntu Linux executando a versão 18.04 ou posterior. Para implantar uma VM Linux no Azure, consulte Criar e gerenciar VMs Linux.
Se você implantar seu cluster AKS primeiro, o Azure preencherá automaticamente as configurações de rede virtual ao implantar sua VM do Azure Ubuntu, associando a VM do Ubuntu na mesma VNet. Se você quiser trabalhar com redes emparelhadas, consulte a documentação acima.
Implantando o Servidor NFS em uma máquina virtual
Para implantar um Servidor NFS na máquina virtual do Azure Ubuntu, copie o seguinte script Bash e salve-o em sua máquina local. Substitua o valor da variável AKS_SUBNET pelo valor correto do cluster AKS, caso contrário, o valor padrão especificado abrirá o Servidor NFS para todas as portas e conexões. Neste artigo, o arquivo é chamado
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 com a conexão ao Servidor NFS a partir do cluster AKS.
Depois de criar sua VM Linux, copie o arquivo criado na etapa anterior de sua máquina 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 de shell seguro (SSH) 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
Conectando o cluster AKS ao servidor NFS
Você pode se conectar ao Servidor NFS a partir do cluster 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 emparelhadas. Para saber como configurar o cluster na mesma rede virtual, consulte: Criando cluster AKS na rede virtual existente.
Quando ambos os recursos estiverem na mesma VNet virtual ou emparelhada, provisione um volume persistente e uma declaração de volume persistente em seu cluster AKS. Os contêineres podem então montar a unidade NFS em seu 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 seu Servidor NFS.
Crie um manifesto YAML chamado pvc-azurefilesnfs.yaml com um PersistentVolumeClaim que usa o PersistentVolume. Por exemplo:
Importante
O valor 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 seu Servidor NFS.
Resolução de Problemas
Se você não conseguir se conectar ao servidor a partir do cluster AKS, o problema pode ser o diretório exportado ou seu pai, não tem permissões suficientes para acessar a VM do Servidor NFS.
Verifique se o diretório de exportação e o diretório pai receberam 777 permissões.
Você pode verificar as permissões executando o seguinte comando e os diretórios devem ter permissões 'drwxrwxrwx ':
ls -l
Próximos passos
- Para obter as práticas recomendadas associadas, consulte Práticas recomendadas para armazenamento e backups no AKS.
- Para saber mais sobre como configurar seu Servidor NFS ou para ajudar a depurar problemas, consulte o seguinte tutorial do Tutorial NFS da comunidade Ubuntu
Azure Kubernetes Service