DEV Community

Cover image for Configurando um Cluster Kubernetes em Alta Disponibilidade (1/5)
Silvio Silva
Silvio Silva

Posted on • Updated on

Configurando um Cluster Kubernetes em Alta Disponibilidade (1/5)

Resumo

Seguir os passos aqui descritos me ajudou a entender melhor como um Cluster Kubernetes funciona e a testar aspectos que só fazem sentido em um ambiente com vários servidores.

Fique à vontade para entrar em contato comigo e esclarecer qualquer dúvida, vamos continuar aprendendo juntos!

No entanto, acho importante enfatizar que o Cluster criado aqui tem como finalidade somente o aprendizado e não deve ser usado em ambientes de produção.

Dito isso, mãos à obra!


Seguindo este e os próximos posts você conseguirá:

Provisionar 8 máquinas virtuais:

Caso queira mudar o número de máquinas, a quantidade de memória, a faixa de endereços IP (192.168.10.0/26) assim como o domínio example.com, altere os valores no arquivo Vagrantfile. Os scripts que criam os servidores DNS e o Load Balancer HAProxy buscam essas informações de lá.

Máquina RAM IP
dns 512 MB 192.168.10.2
loadbalancer 512 MB 192.168.10.10
master-1 2 GB 192.168.10.11
master-2 2 GB 192.168.10.12
master-3 2 GB 192.168.10.13
worker-1 2 GB 192.168.10.21
worker-2 2 GB 192.168.10.22
worker-3 2 GB 192.168.10.23

*Sites como Spiceworks Subnet Calculator ajudam a entender melhor como funciona o dimensionamento de sub nets (CIDR - Classless Inter-Domain Routing).

Dica: digite 192.168.10.0/26 no campo "First Address or CIDR" e clique em "Generate". No campo "Last Address" você verá o último endereço dessa faixa de IP.

Configurar as Máquinas com os Pré-requisitos

  • Instalar o Ubuntu 18.04
  • Desativar o Swap
  • Configurar parâmetros de DNS
  • Configurar IP Fixo (usando netplan)
  • Configurar Rota para o Services (10.96.0.0/8)
  • Configurar Host Name com FQDN (ex: dns.example.com)
  • Instalar o containerd 1.2.13 como Container Runtime (CRI)

*Vale ressaltar que é possível usar outros Containers Runtimes como o Docker por exemplo como descrito na documentação aqui.

Porém, o Docker já usa o containerd e o Kubernetes já possui as features de network e storage que o Docker instala também e que não serão utilizadas.

A Ana Calin explica muito bem neste vídeo (em inglês sem legendas) a experiência de migrar de Docker para containerd e as motivações.

Assim, usar o containerd faz com que a nossa instalação seja mais "leve".

O containerd também é usado no projeto Moby (Moby Project) mantido pela Docker e o Moby é usado na Azure, ou seja, em última instância, clusters Kubernetes rodando na Azure (AKS) usam o containerd como Container Runtime.

Preparar os Nodes

Item Ação Masters Workers
kubeadm Instalar Sim Sim
kubelet Instalar Sim Sim
kubectl Instalar Sim Opcional
api-server Pull Sim Não
controller-manager Pull Sim Não
coredns Pull Sim Opcional
etcd Pull Sim Não
scheduler Pull Sim Não
kube-proxy Pull Sim Sim
pause Pull Sim Sim
weave-kube Pull Opcional Opcional
weave-npc Pull Opcional Opcional

Do que você vai precisar

  • Host Linux (usei um notebook com Ubuntu 20.04 e 16GB de RAM)
  • Virtualbox 6.1
  • Vagrant 2.2.9
  • Git
  • TMUX (Opcional mas muito útil)

Provisionando as Máquinas Virtuais

Clone e acesse o Repositório

git clone git@github.com:smsilva/kubernetes.git

cd kubernetes/install/kubeadm/vagrant

Verifique o Status das Máquinas Virtuais

vagrant status

Resultado esperado:

Current machine states:

dns                       not created (virtualbox)
loadbalancer              not created (virtualbox)
master-1                  not created (virtualbox)
master-2                  not created (virtualbox)
master-3                  not created (virtualbox)
worker-1                  not created (virtualbox)
worker-2                  not created (virtualbox)
worker-3                  not created (virtualbox)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.

Crie as máquinas virtuais

./provision.sh

O processo de provisionamento deve levar em torno de 10 minutos (dependendo da velocidade da sua conexão) para criar as 8 máquinas virtuais e nesse processo está incluída a configuração dos servidores DNS e HAProxy Load Balancer.

Caso queira mais detalhes sobre o provisionamento, ele é feito através da execução de scripts que estão disponíveis no diretório kubernetes/install/kubeadm/vagrant/ubuntu/.

Cada escript é chamado no momento do provisionamento das máquinas e essas chamadas são coordenadas no arquivo kubernetes/install/kubeadm/vagrant/Vagrantfile.

Verifique novamente o status após a conclusão do processo de provisionamento.

vagrant status

Resultado esperado:

Current machine states:

dns                       running (virtualbox)
loadbalancer              running (virtualbox)
master-1                  running (virtualbox)
master-2                  running (virtualbox)
master-3                  running (virtualbox)
worker-1                  running (virtualbox)
worker-2                  running (virtualbox)
worker-3                  running (virtualbox)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.


Próximo passo: Preparando as Máquinas Virtuais

Oldest comments (0)