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