Isso é um alerta
“É importante considerar vários fatores ao instalar um cluster Kubernetes, incluindo o sistema operacional e a versão específica do Kubernetes. Esta documentação cobre exclusivamente a instalação do cluster Kubernetes versão 1.30 em Ubuntu 24.04 LTS. Caso opte por outras versões, você poderá enfrentar problemas durante a instalação.”
Antes de começar
Um host Linux compatível. O projeto Kubernetes fornece instruções genéricas para distribuições Linux baseadas em Debian e Red Hat, e aquelas distribuições sem um gerenciador de pacotes.
2 GB ou mais de RAM por máquina (menos que isso deixará pouco espaço para seus aplicativos).
2 CPUs ou mais.
Conectividade de rede completa entre todas as máquinas no cluster (rede pública ou privada é suficiente).
Nome de host exclusivo, endereço MAC e product_uuid para cada nó. Veja aqui para mais detalhes.
Certas portas estão abertas em suas máquinas.
Configuração de swap. O comportamento padrão de um kubelet era falhar ao iniciar se a memória swap fosse detectada em um nó. Veja Gerenciamento de memória swap para mais detalhes. Você DEVE desabilitar o swap se o kubelet não estiver configurado corretamente para usar o swap. Por exemplo, sudo swapoff -a desabilitará o swap temporariamente. Para tornar essa alteração persistente em reinicializações, certifique-se de que o swap esteja desabilitado em arquivos de configuração como /etc/fstab, systemd.swap, dependendo de como ele foi configurado no seu sistema.
Configurando servidor
É uma boa pratica você configurar o servidor certinho para trabalhar com o cluster kubernetes, seja para ambiente de produção ou teste, esta parte que vamos fazer se você não quiser não precisa seguir, mas é muito importante.
Você pode criar um servidor virtual, configurar todos os itens necessários e, em seguida, clonar esse servidor para criar um cluster. Se você estiver utilizando VirtualBox, Proxmox ou qualquer outro hipervisor, siga os passos abaixo.
No meu caso eu estou usando o ubuntu server 22.4, depois de instalado você precisa atualizar e instalar alguns pacotes, pode acontecer de você precisar pular para root porque somente com o comando abaixo não funciona.
sudo apt update && apt upgrade -y
2. Deixando os IPs do servidor estático.
sudo vim /etc/netplan/00-installer-config.yaml
Copie a configuração abaixo para inserir dentro do /etc/netplan/00-installer-config.yaml, lembre-se que você precisa inserir o IP da sua rede!
3. Se você não estiver um DNS configurado na sua rede, configure o hosts para que possamos configurar nossos hosts com nome.
sudo vim /etc/hosts
Copie somente a sessao onde esta escrito somente # DNS Cluster Kubernetes, lembre-se de configurar com os IPs da sua rede!
127.0.0.1 localhost
127.0.1.1 server
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
# DNS Cluster Kubernetes
192.168.0.10 k8s-master
192.168.0.11 k8s-node01
192.168.0.12 k8s-node02
Desabilitar o swap é uma boa prática ao configurar um cluster Kubernetes. Se o swap estiver habilitado durante a criação do cluster, você receberá um aviso sobre isso
sudo vim /etc/fstab
Eu vou deixa aqui como geralmente vai esta no seu fstab, você precisa deletar somente a linha “/swap.img none swap sw 0 0” lembre que isso precisa ser feito em todos os servidores que vai fazer parte do cluster.
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#
# / was on /dev/ubuntu-vg/ubuntu-lv during curtin installation
/dev/disk/by-id/dm-uuid-LVM-Dl3oUzcbSMbzEg5H1UhrHbpFizTEg8EiOqFzBMeMYtsCkDb0JwjGNOVItPFz0UcJ / ext4 defaults 0 1
# /boot was on /dev/sda2 during curtin installation
/dev/disk/by-uuid/2973236c-cfb3-4678-bf4b-1f7de7441eca /boot ext4 defaults 0 1
# Delete esta linha abaixo
/swap.img none swap sw 0 0
Agora você precisa desabilitar o swap
swapoff -a
Instalando o runtime de contêiner
Instalando o Containerd
sudo apt install containerd -y
Configurando o Containerd
sudo mkdir -p /etc/containerd/
sudo vim /etc/containerd/config.toml
Você instalará estes pacotes em todas as suas máquinas:
kubeadm: o comando para inicializar o cluster.
kubelet: o componente que é executado em todas as máquinas do seu cluster e faz coisas como iniciar pods e contêineres.
kubectl: o utilitário de linha de comando para se comunicar com seu cluster.
O kubeadm não instalará ou gerenciará kubeletou kubectlpara você, então você precisará garantir que eles correspondam à versão do plano de controle do Kubernetes que você deseja que o kubeadm instale para você. Se você não fizer isso, há o risco de ocorrer uma distorção de versão que pode levar a um comportamento inesperado e com bugs. No entanto, uma distorção de versão menor entre o kubelet e o plano de controle é suportada, mas a versão do kubelet nunca pode exceder a versão do servidor da API. Por exemplo, o kubelet executando 1.7.0 deve ser totalmente compatível com um servidor da API 1.8.0, mas não vice-versa.
Isso é um alerta
Estas instruções excluem todos os pacotes do Kubernetes de quaisquer atualizações do sistema. Isso ocorre porque o kubeadm e o Kubernetes exigem atenção especial para atualização .
Estas instruções são para o Kubernetes v1.30.
Atualize o aptíndice de pacotes e instale os pacotes necessários para usar o aptrepositório do Kubernetes:
2. Baixe a chave pública de assinatura para os repositórios de pacotes do Kubernetes. A mesma chave de assinatura é usada para todos os repositórios, então você pode ignorar a versão na URL:
Isso é um alerta
1. Se o diretório `/etc/apt/keyrings` não existir, ele deve ser criado antes do comando curl, leia a nota abaixo.
2. sudo mkdir -p -m 755 /etc/apt/keyrings
5. Habilite o serviço kubelet antes de executar o kubeadm:
sudo systemctl enable --now kubelet
Configuração de rede
Por padrão, o kernel Linux não permite que pacotes IPv4 sejam roteados entre interfaces. A maioria das implementações de rede de cluster do Kubernetes alterará essa configuração (se necessário), mas alguns podem esperar que o administrador faça isso por eles. (Alguns também podem esperar que outros parâmetros sysctl sejam definidos, módulos do kernel sejam carregados, etc.; consulte a documentação para sua implementação de rede específica.)
Habilitar encaminhamento de pacotes IPv4
Para habilitar manualmente o encaminhamento de pacotes IPv4:
# sysctl params required by setup, params persist across reboots
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF
# Apply sysctl params without reboot
sudo sysctl --system
Verifique se net.ipv4.ip_forwardestá definido como 1 com:
sysctl net.ipv4.ip_forward
Clonando o servidor
Agora que configuramos o servidor, não será necessário repetir todos os passos em cada servidor. Precisamos apenas clonar o servidor que já configuramos. No meu caso, vou trabalhar com um cluster composto por três servidores: um principal, que será o control-plane, e dois nodes. Após a clonagem, é importante lembrar de atribuir IPs diferentes a cada servidor e configurar o hostname diferente para cada um deles no meu caso ficou k8s-master, k8s-node01 e k8s-node02.
Depois de clonar os servidores, precisamos realizar alguns passos importantes para evitar problemas, já que não podemos ter itens repetidos no sistema operacional, pois isso poderia causar conflitos e comprometer o funcionamento do cluster.
Verifique se o endereço MAC e o product_uuid são exclusivos para cada nó.
Você pode obter o endereço MAC das interfaces de rede usando o comando ip linkouifconfig -a
O product_uuid pode ser verificado usando o comandosudo cat /sys/class/dmi/id/product_uuid
É muito provável que dispositivos de hardware tenham endereços exclusivos, embora algumas máquinas virtuais possam ter valores idênticos. O Kubernetes usa esses valores para identificar exclusivamente os nós no cluster. Se esses valores não forem exclusivos para cada nó, o processo de instalação poderá falhar .
Verifique os adaptadores de rede
Se você tiver mais de um adaptador de rede e seus componentes do Kubernetes não puderem ser acessados na rota padrão, recomendamos que você adicione rotas IP para que os endereços do cluster do Kubernetes passem pelo adaptador apropriado.
Verifique as portas necessárias
Essas portas necessárias precisam estar abertas para que os componentes do Kubernetes se comuniquem entre si. Você pode usar ferramentas como netcat para verificar se uma porta está aberta. Por exemplo.
O plugin de rede de pod que você usa também pode exigir que certas portas sejam abertas. Como isso difere em cada plugin de rede de pod, consulte a documentação dos plugins sobre quais portas eles precisam.
nc 172.0.0.1 6443 -v
Criando um cluster com kubeadm
Você precisará executar este comando em um dos nós que foram configurados como master.
–apiserver-advertise-address=192.168.0.70 = IP do seu master
–pod-network-cidr=10.244.0.0/16 = CIDR dos Pods
Após executar o comando acima, seu cluster será criado e você verá uma mensagem semelhante à seguinte:
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.0.70:6443 --token jy52pe.dtalx3vj5ng3ty42
--discovery-token-ca-cert-hash sha256:204ee83468f45e71f26a41083092ed1e603220e1e66e1da4e5abab908e8996bb
Para começar a usar seu cluster, você precisa executar o seguinte como usuário regular:
Pronto pessoal, tudo estando certo acabamos por aqui, lembre-se vamos seguindo sempre nos estudos porque não para por aqui e pedimos que se você gostou do nosso material curta no botão abaixo, caso não também é muito importante sua colaboração para que possamos melhorar, um grande abraço e até a próxima!
Instalando Cluster Kubernetes v1.30 com Kubeadm
Isso é um alerta
“É importante considerar vários fatores ao instalar um cluster Kubernetes, incluindo o sistema operacional e a versão específica do Kubernetes. Esta documentação cobre exclusivamente a instalação do cluster Kubernetes versão 1.30 em Ubuntu 24.04 LTS. Caso opte por outras versões, você poderá enfrentar problemas durante a instalação.”
Antes de começar
Configurando servidor
É uma boa pratica você configurar o servidor certinho para trabalhar com o cluster kubernetes, seja para ambiente de produção ou teste, esta parte que vamos fazer se você não quiser não precisa seguir, mas é muito importante.
Você pode criar um servidor virtual, configurar todos os itens necessários e, em seguida, clonar esse servidor para criar um cluster. Se você estiver utilizando VirtualBox, Proxmox ou qualquer outro hipervisor, siga os passos abaixo.
2. Deixando os IPs do servidor estático.
Copie a configuração abaixo para inserir dentro do /etc/netplan/00-installer-config.yaml, lembre-se que você precisa inserir o IP da sua rede!
Aplique as configurações de redes.
3. Se você não estiver um DNS configurado na sua rede, configure o hosts para que possamos configurar nossos hosts com nome.
Copie somente a sessao onde esta escrito somente # DNS Cluster Kubernetes, lembre-se de configurar com os IPs da sua rede!
Desabilitar o swap é uma boa prática ao configurar um cluster Kubernetes. Se o swap estiver habilitado durante a criação do cluster, você receberá um aviso sobre isso
Eu vou deixa aqui como geralmente vai esta no seu fstab, você precisa deletar somente a linha “/swap.img none swap sw 0 0” lembre que isso precisa ser feito em todos os servidores que vai fazer parte do cluster.
Agora você precisa desabilitar o swap
Instalando o runtime de contêiner
Configurando o Containerd
Inserir dentro do arquivo config.toml
Reiniciar o serviço
Você instalará estes pacotes em todas as suas máquinas:
kubeadm
: o comando para inicializar o cluster.kubelet
: o componente que é executado em todas as máquinas do seu cluster e faz coisas como iniciar pods e contêineres.kubectl
: o utilitário de linha de comando para se comunicar com seu cluster.O kubeadm não instalará ou gerenciará
kubelet
oukubectl
para você, então você precisará garantir que eles correspondam à versão do plano de controle do Kubernetes que você deseja que o kubeadm instale para você. Se você não fizer isso, há o risco de ocorrer uma distorção de versão que pode levar a um comportamento inesperado e com bugs. No entanto, uma distorção de versão menor entre o kubelet e o plano de controle é suportada, mas a versão do kubelet nunca pode exceder a versão do servidor da API. Por exemplo, o kubelet executando 1.7.0 deve ser totalmente compatível com um servidor da API 1.8.0, mas não vice-versa.Para obter informações sobre a instalação
kubectl
, consulte Instalar e configurar o kubectl .Isso é um alerta
Estas instruções excluem todos os pacotes do Kubernetes de quaisquer atualizações do sistema. Isso ocorre porque o kubeadm e o Kubernetes exigem atenção especial para atualização .
Estas instruções são para o Kubernetes v1.30.
apt
índice de pacotes e instale os pacotes necessários para usar oapt
repositório do Kubernetes:2. Baixe a chave pública de assinatura para os repositórios de pacotes do Kubernetes. A mesma chave de assinatura é usada para todos os repositórios, então você pode ignorar a versão na URL:
Isso é um alerta
1. Se o diretório `/etc/apt/keyrings` não existir, ele deve ser criado antes do comando curl, leia a nota abaixo.
2. sudo mkdir -p -m 755 /etc/apt/keyrings
4. Atualize o índice de pacotes
apt
, instale o kubelet, o kubeadm e o kubectl, e fixe suas versões:5. Habilite o serviço kubelet antes de executar o kubeadm:
Configuração de rede
Por padrão, o kernel Linux não permite que pacotes IPv4 sejam roteados entre interfaces. A maioria das implementações de rede de cluster do Kubernetes alterará essa configuração (se necessário), mas alguns podem esperar que o administrador faça isso por eles. (Alguns também podem esperar que outros parâmetros sysctl sejam definidos, módulos do kernel sejam carregados, etc.; consulte a documentação para sua implementação de rede específica.)
Habilitar encaminhamento de pacotes IPv4
Para habilitar manualmente o encaminhamento de pacotes IPv4:
Verifique se
net.ipv4.ip_forward
está definido como 1 com:Clonando o servidor
Agora que configuramos o servidor, não será necessário repetir todos os passos em cada servidor. Precisamos apenas clonar o servidor que já configuramos. No meu caso, vou trabalhar com um cluster composto por três servidores: um principal, que será o control-plane, e dois nodes. Após a clonagem, é importante lembrar de atribuir IPs diferentes a cada servidor e configurar o hostname diferente para cada um deles no meu caso ficou k8s-master, k8s-node01 e k8s-node02.
Depois de clonar os servidores, precisamos realizar alguns passos importantes para evitar problemas, já que não podemos ter itens repetidos no sistema operacional, pois isso poderia causar conflitos e comprometer o funcionamento do cluster.
Verifique se o endereço MAC e o product_uuid são exclusivos para cada nó.
ip link
ouifconfig -a
sudo cat /sys/class/dmi/id/product_uuid
É muito provável que dispositivos de hardware tenham endereços exclusivos, embora algumas máquinas virtuais possam ter valores idênticos. O Kubernetes usa esses valores para identificar exclusivamente os nós no cluster. Se esses valores não forem exclusivos para cada nó, o processo de instalação poderá falhar .
Verifique os adaptadores de rede
Se você tiver mais de um adaptador de rede e seus componentes do Kubernetes não puderem ser acessados na rota padrão, recomendamos que você adicione rotas IP para que os endereços do cluster do Kubernetes passem pelo adaptador apropriado.
Verifique as portas necessárias
Essas portas necessárias precisam estar abertas para que os componentes do Kubernetes se comuniquem entre si. Você pode usar ferramentas como netcat para verificar se uma porta está aberta. Por exemplo.
O plugin de rede de pod que você usa também pode exigir que certas portas sejam abertas. Como isso difere em cada plugin de rede de pod, consulte a documentação dos plugins sobre quais portas eles precisam.
Criando um cluster com kubeadm
Você precisará executar este comando em um dos nós que foram configurados como master.
Lengenda do comando:
Após executar o comando acima, seu cluster será criado e você verá uma mensagem semelhante à seguinte:
Para começar a usar seu cluster, você precisa executar o seguinte como usuário regular:
Alternativamente, se você for o usuário root, você pode executar
Agora você deve implantar uma rede de pod no cluster.
Execute “kubectl apply -f [podnetwork].yaml” com uma das opções listadas em: https://kubernetes.io/docs/concepts/cluster-administration/addons/
Networking and Network Policy
Vamos precisar configurar um rede para comunicação dos PODS/NODS no cluster em nosso caso vamos esta configurando o flannel, documentação: https://github.com/flannel-io/flannel#deploying-flannel-manually
Agora você pode testar com o comando abaixo