🇺🇸 English version coming soon.
Na Parte 1 desta série, preparamos o ambiente: definimos o hardware, configuramos o /etc/hosts, ajustamos o firewall e desabilitamos o SWAP em todos os nós. Agora que a base está pronta, é hora de instalar o container runtime (containerd) e os pacotes do próprio Kubernetes (kubelet e kubeadm).
Todos os passos abaixo devem ser executados em todos os servidores do cluster — master e workers — a menos que seja indicado o contrário.
Carregando os módulos do kernel
O Kubernetes, através do containerd, depende de dois módulos do kernel Linux: overlay (para o sistema de arquivos em camadas usado pelos containers) e br_netfilter (para que o tráfego de rede em bridges passe pelas regras do iptables).
Para que esses módulos sejam carregados automaticamente a cada boot, crie o arquivo /etc/modules-load.d/containerd.conf:
overlay
br_netfilter
E, para carregá-los imediatamente (sem precisar reiniciar), execute:
$ sudo modprobe overlay
$ sudo modprobe br_netfilter
Ajustando parâmetros de rede do kernel
Crie o arquivo /etc/sysctl.d/99-kubernetes-k8s.conf com os seguintes parâmetros:
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
Esses parâmetros garantem que o tráfego de rede entre pods e serviços seja roteado e filtrado corretamente pelo Kubernetes.
Para aplicar as configurações sem reiniciar o servidor:
$ sudo sysctl --system
Instalando o containerd
O containerd é o container runtime utilizado pelo cluster. Neste caso, vamos instalá-lo através do repositório oficial do Docker, usando apenas o pacote containerd.io (sem instalar o Docker completo).
1. Baixe a chave GPG do repositório:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
2. Crie o arquivo de repositório em /etc/apt/sources.list.d/docker.list:
deb [arch=amd64] https://download.docker.com/linux/debian bullseye stable
3. Atualize a lista de pacotes e instale o containerd:
sudo apt-get update
sudo apt-get install containerd.io
4. Gere o arquivo de configuração padrão do containerd:
$ sudo containerd config default > /etc/containerd/config.toml
5. Ative o cgroup driver systemd
Edite o arquivo /etc/containerd/config.toml:
sudo vim /etc/containerd/config.toml
E altere a opção SystemdCgroup de false para true. Esse ajuste é importante porque o kubelet, por padrão, também utiliza o systemd como cgroup driver — mantê-los alinhados evita instabilidades no gerenciamento de recursos dos containers.
6. Reinicie o containerd para aplicar as mudanças:
sudo systemctl restart containerd
Instalando o Kubernetes
Com o containerd em execução, o próximo passo é instalar os componentes do Kubernetes: kubelet e kubeadm.
1. Adicione a chave GPG do repositório do Kubernetes:
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-gpg-keyring.gpg
2. Adicione o repositório do Kubernetes, criando o arquivo /etc/apt/sources.list.d/kubernetes.list:
deb [signed-by=/etc/apt/trusted.gpg.d/kubernetes-gpg-keyring.gpg] http://pkgs.k8s.io/core:/stable:/v1.31/deb/ /
Nota: esta série usa a versão 1.31 do Kubernetes. Se quiser instalar outra versão, basta trocar o número
v1.31na URL acima pela versão desejada.
3. Atualize a lista de pacotes:
sudo apt update
4. Instale o Kubernetes:
sudo apt install kubelet kubeadm
5. Trave a versão dos pacotes, para evitar que sejam atualizados automaticamente (o que poderia quebrar a compatibilidade do cluster):
sudo apt-mark hold kubelet kubeadm
6. Habilite o kubelet para iniciar automaticamente no boot:
sudo systemctl enable kubelet
Limitando o armazenamento de imagens
Por padrão, o kubelet pode acumular imagens de containers ao longo do tempo, consumindo espaço em disco. Para evitar isso, é possÃvel configurar limites de garbage collection de imagens no arquivo /var/lib/kubelet/kubeadm-flags.env:
vim /var/lib/kubelet/kubeadm-flags.env
Adicione as flags:
--image-gc-high-threshold=60 --image-gc-low-threshold=50
Isso instrui o kubelet a começar a remover imagens não utilizadas quando o disco atingir 60% de uso, parando a limpeza quando chegar a 50%.
Próximos passos
Com o containerd instalado, configurado com o cgroup driver correto, e com o kubelet e kubeadm prontos em todos os nós, já temos tudo o que precisamos para inicializar o cluster.
Na Parte 3 desta série, vamos usar o kubeadm init para criar o control-plane no servidor master e, em seguida, unir os workers ao cluster.
Continua na Parte 3.
Top comments (0)