Criando um cluster no datacenter
Criando um cluster simples com 1 master e 1 node.
Requisitos
- 2 máquinas (1 master + 1 ou mais workers)
- Ubuntu 20.04+ ou similar
- Acesso root/sudo
- Conectividade entre os nós
- Swap desativado:
sudo swapoff -a
Passo 1: Instalando o runtime
O kubernetes é um gerenciado de container, porém ele usa outra ferramenta como runtime para criar e apagar os containers. Nesse caso vamos usar como runtime o containerd.
sudo apt update
sudo apt install -y containerd
Configurar containerd com CNI e Systemd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
Edite o arquivo /etc/containerd/config.toml e altere:
SystemdCgroup = true
Depois reinicie o serviço:
sudo systemctl restart containerd
sudo systemctl enable containerd
Passo 2: Instalar kubeadm, kubelet e kubectl
Instale as ferramentas abaixo nas VMs que serão master e node.
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /' | 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
sudo systemctl enable --now kubelet
Passo 3: Inicializar o nó mestre
Como sera usaro o Calico como CNI, o vamos usaro cidr abaixo.
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
Configure o acesso ao cluster:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Passo 4: Instalar rede de pods
O Kubernetes não fornece uma rede de pods por padrão. Por isso vamos implementa uma CNI (Container Network Interface), que permite que os pods se comuniquem entre si e com o mundo externo.
Sem uma CNI como o Calico, os pods não conseguem se conectar — nem mesmo ao DNS interno do cluster.
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
Passo 5: Adicionar nós workers
No worker, execute o comando gerado pelo kubeadm init:
sudo kubeadm join <IP-do-master>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
Se precisar recuperar o comando:
kubeadm token create --print-join-command
Passo 6: Verificar o estado do cluster
kubectl get nodes
kubectl get pods --all-namespaces