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.13comoContainer 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
Top comments (0)