Configurando Kubernetes no Ubuntu com MicroK8s
O artigo de hoje é sobre como configurar um ambiente Kubernetes de maneira rápida. A ideia é ser o mais simples possível, por isso iremos configurar o Kubernetes com um nó, pois o ambiente será utilizado apenas para alguns testes. Se você procura uma solução para executar containers em ambiente produtivo, com alto desempenho e confiabilidade, a recomendação é utilizar o VMware Tanzu.
Estou utilizando o Ubuntu 20.04 LTS em uma máquina virtual com 2 vCPUs, 4GB de memória RAM e 20GB e disco. Vamos começar instalando o MicroK8s.
sudo snap install microk8s --classic
Agora vamos configurar o usuário para não precisar do sudo para cada comando.
sudo usermod -a -G microk8s $USER sudo chown -f -R $USER ~/.kube su - $USER
Teoricamente apenas com estes comandos já teriamos um ambiente pronto para rodar os containers, porém, em alguns casos podemos nos deparar como erros como o Init:ImagePullBackOff ou similares.
Para evitar problemas com o download rate limit do docker, vamos configurar a autenticação no Docker Hub. Para isso, basta editar o arquivo /var/snap/microk8s/current/args/containerd-template.toml e adcicionar o texto abaixo. Aqui tem mais detalhes.
[plugins."io.containerd.grpc.v1.cri".registry.configs."registry-1.docker.io".auth] username = "seu usuario do docker hub" password = "sua senha"
Após salvar o arquivo, basta reiniciar o serviço do MicroK8s (microk8s stop / microk8s start) e os containers já devem estar rodando sem problemas. Caso algum container ainda esteja com erro, recomendo revisar as credenciais inseridas no arquivo e/ou deletar/recriar o pod especifico utilizando o comando microk8s kubectl delete pod <container-name> -n kube-system.
Agora vamos apenas habilitar o DNS e pronto, estamos com um ambiente Kubernetes funcional.
microk8s enable dns
Lembre de alterar os encaminhadores do seu DNS, para isso use este comando:
microk8s kubectl -n kube-system edit configmap/coredns
Até a próxima!
Curiosidade: A VMware está entre as 3 empresas que mais contribuiram para o Kubernetes na última decada. Veja os detalhes aqui 🙂