Isso é um alerta Se você está enfrentando dificuldades para criar um cluster com Kubeadm e Istio, este tutorial é para você. Recentemente, estava testando o Istio em um cluster Kubernetes com Ubuntu Server 24.4, Kubeadm v1.30 e Istio 1.23.0, mas encontrei diversos problemas. O que funcionou para mim foi utilizar o Ubuntu Server 20.4, Kubeadm v1.28 e Istio 1.23.0. Por isso, decidi compartilhar um passo a passo para que você consiga criar seu cluster com sucesso, usando Kubernetes e Istio de forma eficiente.
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.
É 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.
No meu caso eu estou usando o ubuntu server 20.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
Encaminhando IPv4 e permitindo que o iptables veja o tráfego em ponte.
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# sysctl params required by setup, params persist across reboots
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
# Apply sysctl params without reboot
sudo sysctl --system
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.
Baixe a chave de assinatura pública para os repositórios de pacotes Kubernetes. A mesma chave de assinatura é usada para todos os repositórios, portanto você pode desconsiderar a versão na URL:
Adicione o repositório apt apropriado do Kubernetes. Observe que este repositório possui pacotes apenas para Kubernetes 1.28; para outras versões secundárias do Kubernetes, você precisa alterar a versão secundária do Kubernetes no URL para corresponder à versão secundária desejada (você também deve verificar se está lendo a documentação da versão do Kubernetes que planeja instalar).
Instalando Cluster Kubernetes v1.28
Isso é um alerta
Se você está enfrentando dificuldades para criar um cluster com Kubeadm e Istio, este tutorial é para você.
Recentemente, estava testando o Istio em um cluster Kubernetes com Ubuntu Server 24.4, Kubeadm v1.30 e Istio 1.23.0, mas encontrei diversos problemas. O que funcionou para mim foi utilizar o Ubuntu Server 20.4, Kubeadm v1.28 e Istio 1.23.0. Por isso, decidi compartilhar um passo a passo para que você consiga criar seu cluster com sucesso, usando Kubernetes e Istio de forma eficiente.
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.
É 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.
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
Instalando o Containerd
Encaminhando IPv4 e permitindo que o iptables veja o tráfego em ponte.
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 .Estas instruções são para o Kubernetes 1.28.
Atualize o índice do pacote apt e instale os pacotes necessários para usar o repositório apt do Kubernetes:
Baixe a chave de assinatura pública para os repositórios de pacotes Kubernetes. A mesma chave de assinatura é usada para todos os repositórios, portanto você pode desconsiderar a versão na URL:
Adicione o repositório apt apropriado do Kubernetes. Observe que este repositório possui pacotes apenas para Kubernetes 1.28; para outras versões secundárias do Kubernetes, você precisa alterar a versão secundária do Kubernetes no URL para corresponder à versão secundária desejada (você também deve verificar se está lendo a documentação da versão do Kubernetes que planeja instalar).
Atualize o índice do pacote apt, instale kubelet, kubeadm e kubectl e fixe suas versões:
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:
Pronto, agora você precisar executar os comandos para criar o diretório para acessar o kubernetes, muito parecido com que esta abaixo:
Depois voce precisa executar em todos os nodes o comando aparecido com que esta abaixo gerado na criação do cluster.
Networking and Network Policy
Agora voce precisa criar a rede do kubernetes:
Verificando status do cluster
Isso é um alerta
NOTA
Todos os nodes precisam esta com o status Ready para que possamos começar a implmentar nossas aplicações no kubernetes.
Pronto pessoa chegamos ao fim.