O deploy de um cluster Kubernetes utilizando o Nutanix Prism Element representa uma evolução significativa na forma como equipes de infraestrutura e desenvolvimento gerenciam cargas de trabalho modernas. Ao combinar a robustez da virtualização definida por software (SDDC) com a agilidade dos containers, é possível criar ambientes híbridos eficientes, escaláveis e altamente disponíveis. Este tutorial detalha o processo técnico para provisionar um cluster Kubernetes nativo sobre infraestrutura Nutanix, utilizando o AOS (Acropolis Operating System) e o Prism Central como base.
O objetivo principal é demonstrar como transformar hosts físicos ou hipervisores AHV (Acropolis Hypervisor) em uma plataforma de orquestração de containers pronta para produção. Diferente de soluções gerenciadas por nuvem pública, essa abordagem oferece controle total sobre a camada de virtualização, permitindo otimizações específicas de rede e armazenamento que são críticas para aplicações empresariais.
Pré-requisitos e Preparação do Ambiente
Antes de iniciar o processo de deploy, é fundamental garantir que a infraestrutura subjacente esteja configurada corretamente. O Nutanix Prism Element fornece uma interface unificada para gerenciar clusters, mas a preparação prévia evita falhas comuns durante a instalação do Kubernetes.
- Verificação de Hardware e Recursos: Certifique-se de que o cluster Nutanix possui recursos suficientes. Para um cluster de produção mínimo, recomenda-se pelo menos três nós (master/control plane) com alocação generosa de CPU e RAM. Cada nó worker deve ter recursos dedicados para evitar contention (conflito) de recursos com outras VMs.
- Configuração de Rede: A rede é o ponto crítico em deployments de Kubernetes. Configure VLANs separadas para:
API Network: Para comunicação interna do cluster e acesso à API do kube-apiserver.Data Network: Para tráfego de pods e comunicação entre nós.Storage Network: Se estiver usando iSCSI ou NFS externo (embora o Nutanix use volumes nativos, a isolação ajuda na performance).
- Prism Central: Embora o Prism Element gerencie o cluster de hosts, o Prism Central é essencial para monitoramento avançado e gerenciamento multi-cluster. Instale e configure o Prism Central antes do deploy do Kubernetes para garantir visibilidade completa.
- Sistema Operacional Base: Utilize distribuições Linux compatíveis com o Nutanix AHV, como Ubuntu Server LTS, CentOS Stream ou Red Hat Enterprise Linux (RHEL). Prepare as imagens base ou utilize templates pré-configurados disponíveis na biblioteca de VMs do Prism Element.
Provisionamento dos Nós do Cluster
O próximo passo é criar as Máquinas Virtuais (VMs) que comporão o cluster Kubernetes. No contexto do Nutanix, isso é feito através da interface gráfica do Prism Element ou via API RESTful, mas aqui focaremos na abordagem manual para clareza conceitual.
Criação das VMs Control Plane
Comece criando as VMs que atuarão como nós de controle (masters). Estas VMs gerenciam o estado do cluster e agendam workloads.
- Acesse a interface do Prism Element.
- Navegue até
VMs>Create VM. - Nome: Defina um padrão claro, ex:
k8s-master-01,k8s-master-02,k8s-master-03. - Compute: Aloque no mínimo 4 vCPUs e 8GB de RAM para cada nó master. Para ambientes de produção, considere 8 vCPUs e 16GB+.
- Disk: Adicione um disco bootable (ex: 50GB) e, opcionalmente, discos adicionais se planeja usar storage local para componentes do Kubernetes como etcd. O
etcd, o banco de dados distribuído do Kubernetes, exige IOPS consistentes. - Network: Conecte a VM à VLAN de gerenciamento/API configurada anteriormente. Certifique-se de atribuir IPs estáticos ou reservas DHCP fixas.
- Repita o processo para os nós adicionais (master-02, master-03).
Criação dos Nós Workers
Os nós workers executam as cargas de trabalho (pods). Eles não precisam gerenciar o estado do cluster, mas requerem recursos computacionais robustos.
- Crie novas VMs seguindo o mesmo padrão:
k8s-worker-01,k8s-worker-02. - Compute: Aumente os recursos conforme a demanda. Exemplo: 8 vCPUs e 32GB de RAM.
- Disk: Adicione discos maiores para armazenamento efêmero ou persistente se necessário. O Nutanix permite o uso de
Volume Groupspara garantir consistência de snapshots se você precisar fazer backup dos dados locais. - Network: Conecte à VLAN de dados do Kubernetes.
Configuração Pré-Instalação do Sistema Operacional
Antes de instalar o Kubernetes, cada VM precisa de configurações específicas no sistema operacional para garantir compatibilidade com o kubelet e o container runtime (geralmente containerd ou CRI-O).
- Desabilitar Swap: O Kubernetes falha se o swap estiver ativo. Execute nos nós:
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
- Configurar Firewall (iptables/nftables): O Kubernetes requer que o tráfego de bridge seja tratado corretamente pelo firewall. Adicione as seguintes regras para permitir o tráfego entre os nós:
sudo modprobe br_netfilter
sudo cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
- Instalar Container Runtime: Instale o
containerd, que é o runtime padrão recomendado para a maioria das distribuições Kubernetes modernas.
# Exemplo para Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y containerd
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
- Instalar Kubernetes Tools: Instale o
kubelet,kubeadmekubectlem todos os nós.
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
Inicialização do Cluster Kubernetes
Agora que a infraestrutura virtual está pronta e os sistemas operacionais configurados, podemos iniciar o cluster. Escolha um dos nós masters (geralmente k8s-master-01) para ser o control plane inicial.
Inicializar o Master Node
No nó master-01, execute o comando de inicialização. A flag --control-plane-endpoint é crucial para alta disponibilidade; ela aponta para um endereço IP virtual (VIP) ou balanceador de carga que distribui as requisições entre os masters.
sudo kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--control-plane-endpoint=k8s-api.nutanix.local \
--upload-certs
Após a execução bem-sucedida, o comando fornecerá um token de join e comandos para configurar o acesso administrativo.
- Crie o diretório de configuração local:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
- Provisionar o Plano de Rede (CNI): O Kubernetes não vem com um plugin de rede integrado. Para funcionar no Nutanix, você pode usar plugins padrão como
Calico,FlannelouWeave Net. O Calico é altamente recomendado para ambientes corporativos devido ao seu suporte nativo a políticas de segurança e integração com redes overlay.
kubectl apply -f https://projectcalico.docs.tigera.io/manifests/tigera-operator.yaml
kubectl apply -f https://projectcalico.docs.tigera.io/manifests/custom-resources.yaml
Verifique se os pods do CNI estão rodando:
kubectl get pods -n calico-system
Juntar Nós Workers e Masters Adicionais
Retorne ao terminal do master-01 para obter os comandos de join. O kubeadm gera dois comandos: um para outros masters e outro para workers.
- Adicionar Master-02 e Master-03: Execute o comando
kubeadm joingerado com a flag--control-planenos nós master-02 e master-03. Isso garantirá que você tenha um quorum de controle tolerante a falhas. - Adicionar Workers: Execute o comando
kubeadm join(sem flag de control plane) nos nós worker-01, worker-02, etc.
Verifique o status dos nós:
kubectl get nodes
O output deve mostrar todos os nós como Ready.
Otimização para Nutanix e Storage Persistente
Um dos maiores benefícios de usar o Nutanix é o armazenamento distribuído. Para aproveitar isso no Kubernetes, você deve configurar um StorageClass que utilize o provisionador dinâmico do Nutanix (se disponível via CSI Driver) ou volumes AHV.
Instalação do CSI Driver do Nutanix
O Nutanix CSI Driver permite que o Kubernetes crie automaticamente volumes de armazenamento no Prism Element quando um PersistentVolumeClaim (PVC) é criado. Isso elimina a necessidade de gerenciar manualmente discos virtuais para cada aplicação.
- Baixe e aplique o manifesto do driver CSI:
kubectl apply -f https://github.com/nutanix/csi/releases/download/vX.Y.Z/kubernetes-csi-nutanix.yaml
Verifique se o driver está instalado:
kubectl get storageclass
Deveria aparecer uma StorageClass nomeada como nutanix-ssd ou similar, dependendo da configuração do Prism Element.
Criando um PVC de Teste
Crie um arquivo pvc-test.yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nutanix-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: nutanix-ssd
resources:
requests:
storage: 10Gi
Aplique o PVC:
kubectl apply -f pvc-test.yaml
Se o driver estiver configurado corretamente, você verá um novo Volume no Prism Element associado ao cluster Kubernetes. Isso demonstra a integração profunda entre a orquestração de containers e a plataforma de virtualização.
Monitoramento e Gestão via Prism Central
Com o cluster rodando, a gestão diária deve ser feita através da integração com o Prism Central. O Nutanix oferece dashboards específicos que correlacionam métricas de infraestrutura (CPU, Memória, IOPS dos hosts AHV) com métricas do Kubernetes (uso de pods, latência de rede).
- Acesse o Prism Central.
- Navegue até a seção de
Kubernetes. - Você verá o cluster provisionado listado. Clique nele para ver detalhes em tempo real.
- Utilize os alertas configuráveis para monitorar saúde do cluster. Exemplo: configure um alerta se a latência do disco do volume etcd ultrapassar 5ms, indicando possível contenção de storage no host físico subjacente.
Considerações Finais sobre Segurança e Backup
A segurança em um ambiente Nutanix + Kubernetes deve ser em camadas. Além das políticas de rede do Kubernetes (NetworkPolicies), utilize as regras de segurança nativas do AHV para isolar os nós do cluster da rede externa, permitindo apenas acesso SSH controlado e tráfego de API necessário.
Para backup, o Nutanix oferece snapshots instantâneos. Embora não seja recomendado fazer snapshot direto dos discos do etcd enquanto o serviço está ativo (para garantir consistência), você pode usar ferramentas como KubeVault ou
O deploy de Kubernetes sobre Nutanix Prism Element não é apenas uma escolha técnica, mas estratégica. Ele permite que organizações mantenham o controle de dados e conformidade (compliance) dentro de suas fronteiras físicas, enquanto aproveitam a agilidade da nuvem privada para desenvolvimento e inovação. Ao seguir este guia passo a passo, você estabelece uma base sólida para orquestração de containers escalável, resiliente e otimizada para o hardware moderno.
Lembre-se de que cada ambiente é único. Ajuste os tamanhos das VMs, as políticas de QoS (Quality of Service) no Nutanix e as configurações de CNI conforme a carga real de suas aplicações. A documentação oficial do Kubernetes e do Nutanix Prism Element deve ser consultada continuamente para atualizações de versões e melhores práticas de segurança.