A instalação do Kubernetes é naturalmente em cluster, envolvendo pelo menos 2 nodos. Construir essa infraestrutura pode ser um desafio por si só e muitos acabam gastando dinheiro em alguma estrutura gerenciada como EKS, AKS ou GKS, mas isso não é necessário. Soluções como Minikube, kind ou k3d podem ser a melhor saída para começar a trabalhar com o k8s.
Sumário
Soluções de instalação local
Instalar e configurar um cluster de Kubernetes pode ser um desafio além do necessário para quem está iniciando os estudos em Kubernetes. Por conta disso empresas existem soluções para instalação local.
A solução mais conhecida é o Minukube. Ela é baseada em maquinas virtuais, portanto ela depende de um Hyper-V, Hyperkit, VirtualBox e outros. Mas ele também pode ser instalado em containers com Docker ou Podman.
As soluções Kind e K3D só funcionam com sobre o Docker. Aparentemente também funciona com outros gerenciadores de container mas está numa fase experimental.
Esse artigo vai explicar como o K3D pode ser utilizado para a criação de um cluster com vários nós control-plane e vários nós worker.
Download do K3D
Nesse momento ao acessar o site da K3D ele me direciona para o link https://k3d.io/v5.4.1/ onde encontro vários métodos de download, seja para Windows, Linux ou Mac. Apenas para referência esse pode ser um método interessante para instalação em seu linux:
curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
Criação do Cluster
Após instslado o programa, para criar o cluster é realmente bastante simples. A linha de comando a seguir cria o cluster com 3 workers. Além disso há a exposição da porta 31001 de dentro do cluster para fora através da porta 80. Essa última configuração é opicional mas pode ser útil se houver o interesse de publicar alguma porta do cluster para acesso de fora dele.
Vale ressaltar que se houver a necessidade da criação e exposição de um serviço não será possível acessar por fora do cluster, mesmo com port-foreward, caso essa porta não esteja indicada na configuração do cluster. Esse é um problema dessa solução, mas acho que vale a pena mesmo assim. Mas se você preferir utilizar um GKE por exemplo você não terá problemas desse tipo
k3d cluster create meucluster -a 3 -p 31001:80
Como verificar se tudo foi criado corretamente
A primeira coisa a fazer é verificar o seu Docker. Os containers devem estar criados e rodando, sem quaisquer problemas. Para verificar basta rodar o comando a seguir. Você deve observar container com nomes k3d-meucluster-agent-2, por exemplo
docker ps
Após isso você deve verificar como está o seu kubernetes. Para isso execute a linha de comando Kubectl (caso não tenha instalado: https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/). Ao rodar essa linha você conseguir observar o control-plane e os nodes worker criados.
kubectl get nodes
thiago@DESKTOP-9K9JS06:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
k3d-meucluster-server-0 Ready control-plane,master 8m13s v1.23.8+k3s1
k3d-meucluster-agent-1 Ready <none> 8m9s v1.23.8+k3s1
k3d-meucluster-agent-2 Ready <none> 8m9s v1.23.8+k3s1
k3d-meucluster-agent-0 Ready <none> 8m10s v1.23.8+k3s1
para finalizar um teste um pouco mais prático pode ser feito para ter certeza que ele realmente está funcionando. Utilize as seguintes linhas de comando e veja se é possível acessar um container de um pod com o nginx.
kubectl run nginx --image=nginx
kubectl get pods
# NAME READY STATUS RESTARTS AGE
# nginx 1/1 Running 0 5s
kubectl exec -it nginx -- bash
## -------------------------------------------------------
ls
# bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
Conclusão
Com esse artigo você aprendeu um pouco sobre o kubernetes e como criar um cluster de forma simples.
Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.