Não perca as novas postagens! Inscrever-se! Além disso, visite os Fóruns VHT!
![Como instalar o Kubernetes no Ubuntu 22.04 com Kubeadm](https://optimuscloud.com.br/wp-content/uploads/2024/01/1705342352_Como-instalar-o-Kubernetes-no-Ubuntu-2204-com-Kubeadm.png)
Como instalar o Kubernetes no Ubuntu 22.04 com Kubeadm
15 de janeiro de 2024![Administradores do Proxmox Networking para VMware vSphere](https://optimuscloud.com.br/wp-content/uploads/2024/01/1705342510_Administradores-do-Proxmox-Networking-para-VMware-vSphere.png)
Administradores do Proxmox Networking para VMware vSphere
15 de janeiro de 2024Uma das coisas legais que fiz recentemente no laboratório foi trabalhar com configurações de classe de armazenamento compartilhado com volumes persistentes do Kubernetes. Recentemente configurei um compartilhamento NFS em meu dispositivo Synology NAS e usei o nfs-subdir-external-provisioner para adicionar armazenamento compartilhado persistente ao cluster para aumentar o armazenamento para meus aplicativos. Vejamos como configurar um compartilhamento NFS e instalar o nfs-subdir-external-provisioner.
O que é o nfs-subdir-external-provisioner?
O provisionador externo do subdiretório NFS serve como um provisionador automatizado que aproveita seu servidor NFS pré-configurado para permitir que você ofereça suporte ao provisionamento dinâmico de volumes persistentes do Kubernetes por meio de declarações de volume persistente. A convenção de nomenclatura para os volumes persistentes provisionados segue o formato: ${namespace}-${pvcName}-${pvName}.
Basicamente, a versão resumida é o provisionador externo de subdiretório NFS, que permite conectar seu cluster Kubernetes ao armazenamento persistente NFS. Ele configura uma classe de armazenamento que fornece provisionamento automático de armazenamento para seus pods do Kubernetes.
Armazenamento NFS e Kubernetes
Para clusters Kubernetes, o armazenamento NFS é uma ótima solução para volumes persistentes. O NFS permite que vários pods acessem o armazenamento ao mesmo tempo e acessem os mesmos dados. Isto é importante porque você deseja garantir que todos os seus hosts e pods possam acessar os dados para cenários de failover.
NFS é um protocolo que já existe há muito tempo e provavelmente é encontrado em muitos ambientes, o que significa que você não precisará configurar um novo tipo de armazenamento apenas para Kubernetes. Você pode aproveitar o que já tem.
Configure um compartilhamento NFS no Synology
Embora eu mostre as etapas no Synology, as etapas gerais funcionarão com outros tipos de servidores NFS. No laboratório doméstico, atualmente tenho o dispositivo Synology NAS como meu armazenamento NAS principal. Vejamos como configurar o compartilhamento NFS para Kubernetes.
Habilitar NFS
Uma das primeiras etapas que precisamos realizar é habilitar o NFS nos serviços de arquivo. Navegar para Painel de controle > Serviços de arquivos > NFS. Habilite o serviço NFS e defina seu protocolo NFS máximo.
![Habilite nfs em serviços de arquivo no synology nas](https://optimuscloud.com.br/wp-content/uploads/2024/01/Provisionador-externo-NFS-Subdir-conecte-seu-NAS-com-Kubernetes.png)
Crie e edite sua pasta compartilhada
Navegar para Painel de controle > Pasta compartilhada. Crie uma nova pasta, o que você pode fazer no Criar cardápio. Então clique Editar.
![Editando nossa pasta de armazenamento nfs compartilhada do kubernetes](https://optimuscloud.com.br/wp-content/uploads/2024/01/1705342368_451_Provisionador-externo-NFS-Subdir-conecte-seu-NAS-com-Kubernetes.png)
![Editando nossa pasta de armazenamento nfs compartilhada do kubernetes](https://optimuscloud.com.br/wp-content/uploads/2024/01/1705342368_451_Provisionador-externo-NFS-Subdir-conecte-seu-NAS-com-Kubernetes.png)
A seguir, clique Permissões NFS. Certifique-se de ter o seguinte definido:
- Nome do host ou IP – O endereço IP ou intervalo de IP que você deseja permitir a conexão
- Privilégio – Ler/Escrever
- Squash – Mapeie todos os usuários para administrador
- Segurança – sys
- Habilitar assíncrono – verificado
- Permitir conexões de portas não privilegiadas (portas superiores a 1024) – verificado
- Permitir que os usuários acessem subpastas montadas – verificado
![Configurando permissões NFS para Kubernetes](https://optimuscloud.com.br/wp-content/uploads/2024/01/1705342368_174_Provisionador-externo-NFS-Subdir-conecte-seu-NAS-com-Kubernetes.png)
![Configurando permissões NFS para Kubernetes](https://optimuscloud.com.br/wp-content/uploads/2024/01/1705342368_174_Provisionador-externo-NFS-Subdir-conecte-seu-NAS-com-Kubernetes.png)
Ok, agora devemos estar configurados no lado do Synology NAS. A seguir, testaremos nossa conexão com o compartilhamento NFS.
Instale o cliente NFS em sua caixa de teste Linux e hosts Kubernetes
Sua caixa de teste do Linux e hosts Kubernetes podem ser a mesma coisa. Você precisará instalar as ferramentas NFS em seus hosts Kubernetes para que eles possam fazer as conexões NFS necessárias. A princípio pensei que isso não era necessário nos próprios hosts do Kubernetes. Mas, com alguns testes, este não é o caso.
Se não instalá-lo, você receberá uma mensagem de erro quando o cluster Kubernetes tentar provisionar uma solicitação de volume persistente usando o provisionador NFS.
apt install nfs-common -y
![Instalando as ferramentas comuns do nfs](https://optimuscloud.com.br/wp-content/uploads/2024/01/1705342368_982_Provisionador-externo-NFS-Subdir-conecte-seu-NAS-com-Kubernetes.png)
![Instalando as ferramentas comuns do nfs](https://optimuscloud.com.br/wp-content/uploads/2024/01/1705342368_982_Provisionador-externo-NFS-Subdir-conecte-seu-NAS-com-Kubernetes.png)
Testando a conexão com o servidor NFS
Podemos testar usando uma montagem NFS raiz do cliente NFS. Use a sintaxe a seguir para testar sua conexão servidor NFS/NAS. Abaixo está o que usei para o meu ambiente. Substitua pelas configurações do seu ambiente pelo caminho de montagem raiz do cliente NFS.
mount -t nfs 10.1.149.4:/volume1/k8sdata /mnt
Agora, vamos instalar o provisionador externo do subdiretório NFS.
Instalando o provisionador externo do subdiretório NFS em seu cluster Kubernetes
Agora que testamos o compartilhamento NFS em execução no seu sistema de armazenamento e podemos nos conectar a ele, vamos instalar o provisionador externo do subdiretório NFS no cluster Kubernetes. Isso instalará os contêineres do provisionador do cliente NFS a partir da imagem de contêiner especial do provisionador.
##Add the helm repo
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
##Configure the provisioner for your NFS share
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
--set nfs.server=x.x.x.x
--set nfs.path=/exported/path
Você também pode usar Kustomize com uma especificação de provisionador de cliente NFS e imagem de provisionador de cliente NFS, metadados de implantação, modos de acesso de cliente NFS, modelo, réplicas, especificação de pod, nome de conta de serviço, etc, ou instalá-lo manualmente. Ainda assim, é muito mais complicado do que simplesmente usar o gráfico do leme.
Se precisar de um controle de acesso baseado em função diferente, você pode configurar isso em arquivos rbac.yaml para autenticação, especificando a configuração necessária para seu aplicativo.
Visualizando a configuração da sua classe de armazenamento
Depois de instalar o provisionador externo nfs-subdir, agora podemos emitir:
kubectl get sc
Abaixo vemos o valor provisioner_name listado para o provisionador NFS no exemplo.
![Configurando as classes de armazenamento após a instalação](https://optimuscloud.com.br/wp-content/uploads/2024/01/1705342368_573_Provisionador-externo-NFS-Subdir-conecte-seu-NAS-com-Kubernetes.png)
![Configurando as classes de armazenamento após a instalação](https://optimuscloud.com.br/wp-content/uploads/2024/01/1705342368_573_Provisionador-externo-NFS-Subdir-conecte-seu-NAS-com-Kubernetes.png)
Vemos as classes de armazenamento listadas agora como um provisionador automático. como uma nota. Eu tive que alterá-lo do provisionador “nfs-01” que foi definido como padrão na instalação para o “nfs-client”. Depois de fazer isso, os pods conseguiram provisionar o armazenamento conforme o esperado.
Se precisar fazer isso, você pode usar este comando:
kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Crie um contêiner para usar armazenamento persistente
Agora que temos o armazenamento persistente configurado usando o provisionador de cliente NFS, podemos criar um contêiner de teste usando um arquivo deploy.yaml para testar o provisionamento automático de armazenamento persistente da classe de armazenamento persistente.
Abaixo, estamos criando um contêiner Nginx e direcionando a classe de armazenamento nfs-client, especificando o tamanho do PVC, imagens, provedor, env, rótulos, etc. e armazenando isso em um arquivo YAML.
# pod-with-pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-pvc
spec:
storageClassName: nfs-client
accessModes: (ReadWriteOnce)
resources: { requests: { storage: 5Gi } }
---
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
volumes:
- name: pvc
persistentVolumeClaim:
claimName: nginx-pvc
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: pvc
mountPath: /usr/share/nginx/html
Crie o arquivo acima como pod.yaml ou qualquer outro nome desejado com a extensão .yaml. Então, executaremos o seguinte:
kubectl create -f pod.yaml
Verifique as reivindicações de volume persistente (PVC)
Depois que o contêiner for criado, podemos dar uma olhada nas declarações de volume persistente para ver se nosso contêiner Nginx foi capaz de criar o PVC com êxito e ver se ele está no estado vinculado. Você pode visualizar seus volumes persistentes usando o comando:
kubectl get pvc
Como podemos ver abaixo, temos um novo volume persistente chamado nginx-pvc e o estado é vinculado.
![A reivindicação de volume persistente está configurada para nosso pod nginx](https://optimuscloud.com.br/wp-content/uploads/2024/01/1705342368_408_Provisionador-externo-NFS-Subdir-conecte-seu-NAS-com-Kubernetes.png)
![A reivindicação de volume persistente está configurada para nosso pod nginx](https://optimuscloud.com.br/wp-content/uploads/2024/01/1705342368_408_Provisionador-externo-NFS-Subdir-conecte-seu-NAS-com-Kubernetes.png)
Vídeo passo a passo de Kubernetes Synology NAS NFS
perguntas frequentes
Como o NFS Subdir External Provisioner aprimora os ambientes Kubernetes?
O NFS Subdir External Provisioner simplifica o processo de gerenciamento de armazenamento persistente no Kubernetes. Ao automatizar o provisionamento de armazenamento baseado em NFS, ele atende às demandas dinâmicas de aplicativos em contêineres, garantindo a alocação eficiente de armazenamento sem configuração manual.
Quais são os benefícios de usar NFS com Kubernetes?
NFS é uma tecnologia testada e comprovada que a maioria executa em seu ambiente se tiver um dispositivo de armazenamento NAS ou outro tipo de servidor de armazenamento configurado. Sendo esse o caso, você pode aproveitar as vantagens dessa infraestrutura para fornecer armazenamento persistente para seu cluster Kubernetes.
O NFS Client Provisioner pode oferecer suporte a diferentes modos de acesso para armazenamento?
Sim, o NFS Client Provisioner oferece suporte a vários modos de acesso, incluindo ReadWriteMany, ReadWriteOnce e ReadOnlyMany. Essa flexibilidade permite atender a diversos requisitos de armazenamento no Kubernetes, desde armazenamento de pod individual até recursos compartilhados.
Qual é o papel do Helm Chart na implantação de soluções NFS no Kubernetes?
Os Helm Charts simplificam a implantação de soluções NFS no Kubernetes, agrupando todas as configurações e recursos necessários. Isso ajuda na configuração consistente e eficiente do armazenamento NFS, reduzindo erros de configuração manual e tempo de implantação.
A compatibilidade com versões anteriores é mantida com o novo NFS Subdir External Provisioner?
Sim, para manter a compatibilidade com versões anteriores, especialmente em configurações de implantação, as convenções de nomenclatura de versões anteriores, como nfs-client-provisioner, são mantidas. Isso garante uma transição tranquila das configurações existentes do Kubernetes para o provisionador mais recente.
Como o NFS Client Root NFS funciona em um ambiente Kubernetes?
A configuração do NFS raiz do cliente NFS envolve a montagem de um compartilhamento NFS como o diretório raiz para volumes persistentes baseados em NFS. Isso permite que os pods do Kubernetes acessem e armazenem dados em um servidor NFS central, possibilitando o compartilhamento e a persistência de dados em vários pods.
O que você precisa pensar sobre armazenamento NFS e Kubernetes?
Certifique-se de ter as ferramentas NFS instaladas em seus hosts Kubernetes. Além disso, aplique as permissões de acesso adequadas ao local de compartilhamento NFS para segurança. Com Synology e muitos outros, você pode definir o escopo dos hosts que podem se conectar ao compartilhamento NFS inserindo hosts ou intervalos de IP permitidos.
Como o NFS Client Provisioner melhora o gerenciamento de armazenamento no Kubernetes?
Ao permitir o provisionamento dinâmico de volumes NFS, o NFS Client Provisioner automatiza a alocação de armazenamento, adaptando-se às novas necessidades dos aplicativos. Isso minimiza a intervenção manual e aumenta a eficiência da utilização de recursos.
O NFS Subdir External Provisioner pode ser usado com compartilhamentos NFS pré-provisionados?
Sim, o NFS Subdir External Provisioner pode funcionar com compartilhamentos NFS pré-provisionados. Ele cria subdiretórios dinamicamente nesses compartilhamentos para atender às reivindicações de volume persistente, proporcionando flexibilidade no gerenciamento dos recursos de armazenamento existentes.
Qual é o significado da especificação do NFS Client Provisioner no Kubernetes?
A especificação do NFS Client Provisioner define os parâmetros de configuração do NFS Client Provisioner, incluindo detalhes do servidor NFS, caminho base e opções de montagem. As especificações corretas garantem integração e funcionamento perfeitos do armazenamento NFS no Kubernetes.
Empacotando
Uma das partes mais importantes da sua infraestrutura Kubernetes é o seu armazenamento. Provavelmente você desejará ter armazenamento persistente para pelo menos alguns de seus pods que dependem de armazenamento para dados persistentes. A maioria dos ambientes de rede possui um NAS tradicional ou servidor com armazenamento NFS configurado.
Para usuários de laboratório doméstico, se você estiver executando Synology ou TrueNAS em seu ambiente, como mostramos, poderá configurar facilmente um compartilhamento NFS e conectar seu cluster Kubernetes. Usando o subdiretório NFS provisionado externamente, você pode direcionar seu compartilhamento NFS com muita facilidade.
Esta é uma ótima maneira de começar a aprender sobre o armazenamento Kubernetes e adicionar armazenamento persistente ao seu homelab e até mesmo aos clusters de produção e aproveitar a resiliência de dados do seu dispositivo NAS ou solução NFS que provavelmente é apoiada por algum tipo de redundância.