Load Balancer externo: via HAProxy + Keepalived com IP virtual
Rede dos pods: Calico
CIDR para pods: 192.168.0.0/16
2.1 – Preparação de Todos os Nós (master e worker)
Executar em todos os nós (masters e workers):
# Atualize o sistema
sudo apt update && sudo apt upgrade -y
# Desative o swap (obrigatório)
sudo swapoff -a
sudo sed -i '/\/swap.img/ s/^/#/' /etc/fstab
# Ative módulos de kernel
sudo modprobe overlay
sudo modprobe br_netfilter
# Carregue os módulos no boot
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
# Parâmetros de rede
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sudo sysctl --system
2.2 – Instalação do container runtime (containerd)
sudo apt install -y containerd
# Cria o arquivo de configuração padrão
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
# Altere para usar systemd como cgroup
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
# Reinicie o serviço
sudo systemctl restart containerd
sudo systemctl enable containerd
2.3 – Instalação dos binários Kubernetes
# Pré-requisitos
sudo apt-get update
# apt-transport-https pode ser um pacote fictício; se for, você pode pular esse pacote
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
# Se o diretório `/etc/apt/keyrings` não existir, ele deve ser criado antes do comando curl, leia a nota abaixo.
sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# Isso sobrescreve qualquer configuração existente em /etc/apt/sources.list.d/kubernetes.list
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
# Atualize o índice de pacotes apt, instale o kubelet, o kubeadm e o kubectl, e fixe suas versões:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
2.4 – Configuração do Load Balancer Externo (Alta Disponibilidade)
Você precisa de um IP virtual (VIP) para acessar o cluster:
Etapa 2 – Instalação do Cluster Kubernetes com kubeadm
Visão Geral
2.1 – Preparação de Todos os Nós (master e worker)
Executar em todos os nós (masters e workers):
2.2 – Instalação do container runtime (containerd)
2.3 – Instalação dos binários Kubernetes
2.4 – Configuração do Load Balancer Externo (Alta Disponibilidade)
Você precisa de um IP virtual (VIP) para acessar o cluster:
2.5 – Inicializar o Cluster no master1
No master1:
Após a conclusão, salve os comandos gerados, como:
2.6 – Configurar o kubectl no master1
2.7 – Instalar a CNI (rede do cluster)
Use a CNI Calico:
2.8 – Adicionar os outros Masters
Nos nós master2 e master3, execute o comando kubeadm join com as flags:
2.9 – Adicionar os nós Worker
Nos nós worker1 e worker2:
2.10 – Verificar o cluster
No master1:
Resultado esperado:
2.11 – (Opcional) Instalar o Kubernetes Dashboard
Crie um ServiceAccount e role de acesso para autenticação.
Conclusão da Etapa 2
Seu cluster Kubernetes está:
Código Ansible
Visão Geral da Automação com Ansible
Componentes:
📁 Estrutura do Projeto
📄 1. Inventário hosts
[masters]
master1 ansible_host=192.168.1.201 master2 ansible_host=192.168.1.202 master3 ansible_host=192.168.1.203
[workers]
worker1 ansible_host=192.168.1.211 worker2 ansible_host=192.168.1.212
[all:vars]
ansible_user=ubuntu vip=192.168.1.200 interface=eth0 kube_version=1.29.0
📄 2. Playbook principal site.yml
📄 3. Role common (ajustes gerais)
📄 4. Role haproxy_keepalived
(mesmo conteúdo que já passamos antes — já está pronto para copiar)
📄 5. Role kube_master
🧪 Etapas adicionais:
Execução