Uday

Uday

Did You Know?

We design Docly for the readers, optimizing not for page views or engagement

Instalando Cluster Kubernetes v1.28

Leitura estimada: 8 minutos 39 visualizações

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.

  1. 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!

network:
ethernets:
  ens18:
    addresses:
    - 192.168.0.10/24
    nameservers:
      addresses:
      - 1.1.1.1
      search:
      - uday.com.br
    routes:
    - to: default
      via: 192.168.0.1
version: 2

Aplique as configurações de redes

sudo netplan apply

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

Inserir dentro do arquivo config.toml

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = true

Reiniciar o serviço

sudo systemctl restart containerd

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.

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:

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg

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:

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

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).

sudo mkdir -p /etc/apt/keyrings
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

Atualize o índice do pacote apt, instale kubelet, kubeadm e 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

Criando um cluster com kubeadm

Você precisará executar este comando em um dos nós que foram configurados como master.

sudo kubeadm init --apiserver-advertise-address=192.168.0.70 --pod-network-cidr=10.244.0.0/16

Lengenda do comando:

  • –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:

Pronto, agora você precisar executar os comandos para criar o diretório para acessar o kubernetes, muito parecido com que esta abaixo:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Depois voce precisa executar em todos os nodes o comando aparecido com que esta abaixo gerado na criação do cluster.

kubeadm join 192.168.0.70:6443 --token jy52pe.dtalx3vj5ng3ty42 
	--discovery-token-ca-cert-hash sha256:204ee83468f45e71f26a41083092ed1e603220e1e66e1da4e5abab908e8996bb

Networking and Network Policy

Agora voce precisa criar a rede do kubernetes:

kubectl apply -f https://reweave.azurewebsites.net/k8s/v1.29/net.yaml

Verificando status do cluster

kubectl get nodes

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.

É muito importante você deixa seu feedback para se gostou ou não para que possamos melhorar nossas documentações!

Compartilhe este documento

Instalando Cluster Kubernetes v1.28

Ou copiar link

    CONTEÚDO

    Criando uma organizations no github

    O que é uma Organizationno GitHub? Uma Organization no GitHub é como uma empresa

    Clonando e pull

    Tópicos: Resolvendo Conflitos no Git O que é um conflito no Git? Um conflito aco

    Trabalhando com Branches

    O que é uma branch? Uma branch (ramo) é como uma linha do tempo separada do seu

    Git e Github

    Conectando ao GitHub e fazendo o primeiro push

    Tópicos:

    Adicionando arquivos e fazendo commits

    Tópicos: Tópicos: Voce também pode reverter um commit Revertendo

    Criando repositório local

    Tópicos: Extras (opcional)

    Instalando o git

    Como instalar o Git No Windows: Ao final, abra o “Git Bash” para usar os comando

    Etepa 5 -Configurar Volumes com Longhorn

    Ótima escolha! 🎯 Longhorn é uma solução de armazenamento distribuído altamente i

    Implementando o Crossplane

    1. Pré-requisitos 2. Instalar o Crossplane via Helm 3. Configurar autenticação A

    Provisionamento em cloud com Crossplane

    Implementar o Kubernetes Dashboard

    Se você está começando com Kubernetes ou quer uma forma prática de visualizar re

    Chat Icon Close Icon