Inicie seus estudos criando um Cluster Kubernetes local com Kind

Se você está aqui é porque está procurando uma forma rápida para criar clusters Kubernetes e dar início aos seus estudos sem se preocupar com o custo de infraestrutura em nuvem ou com um hardware robusto.

Neste post você vai aprender como criar um cluster de forma simples usando uma ferramenta chamada Kind. 

Sobre o Kind

O Kind é uma ferramenta que permite criar clusters Kubernetes local usando o Docker como infraestrutura, ou seja, no lugar de máquinas virtuais ele usa containers docker para fazer o deploy dos control-planes e worker-nodes. Isso significa que você pode usar o Docker instalado na sua máquina para criar um cluster Kubernetes sempre que precisar! Vamos começar?

Caso não tenha o docker instalado em seu computador, segue o passo a passo:

Passo 1 – Instalando o Kind

Abra o terminal e execute os seguintes comandos:

No Windows:

curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.11.1/kind-windows-amd64Move-Item .\kind-windows-amd64.exe c:\some-dir-in-your-PATH\kind.exe

No MacOS:

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-darwin-amd64
chmod +x ./kind
mv ./kind /some-dir-in-your-PATH/kind

Também é possível instalar usando o Brew.sh no MacOS e o Chocolatey no Windows:

No Windows:

choco install kind

No MacOS:

brew install kind

Passo 2 – Instalando o kubectl

Para interagir com o cluster vamos precisar do kubectl, caso já tenha esta ferramenta pode pular este passo.

No Windows:

curl -LO "https://dl.k8s.io/release/v1.23.0/bin/windows/amd64/kubectl.exe"

kubectl version --client

No MacOS:

curl -LO "https://dl.k8s.io/release/v1.23.0/bin/darwin/amd64/kubectl"

chmod +x ./kubectl

sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl

kubectl version --client

Passo 3 – Preparando a configuração do cluster

Nosso cluster de exemplo terá um control-plane e dois workers-nodes, além disso, vamos deixá-lo preparado para usar um Registry Local que será criado logo em seguida.

Para facilitar nosso setup, vamos criar um arquivo de configuração contendo as características que precisamos. Crie um arquivo chamado cluster-config.yaml com o seguinte conteúdo:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
  apiServerAddress: "127.0.0.1"
  apiServerPort: 6443
containerdConfigPatches:
- |-
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:5000"]
    endpoint = ["http://registry:5000"]
nodes:
- role: control-plane
- role: worker
- role: worker

Passo 4 – Criando o cluster

Para criar o cluster execute o comando abaixo chamando o arquivo de configuração:

Nota: Antes de executar o comando certifique-se que seu docker está rodando. Na primeira vez este processo deve demorar alguns minutos porque as imagens docker do Kind precisam ser “baixadas”.

kind create cluster --config=cluster-config.yaml

Resultado:

Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.21.1) 🖼 
 ✓ Preparing nodes 📦 📦 📦  
 ✓ Writing configuration 📜 
 ✓ Starting control-plane 🕹️ 
 ✓ Installing CNI 🔌 
 ✓ Installing StorageClass 💾 
 ✓ Joining worker nodes 🚜 
Set kubectl context to "kind-kind"
You can now use your cluster with:

kubectl cluster-info --context kind-kind

Have a nice day! 👋

Passo 5 – Interagindo com o cluster

Abra o terminal e execute os seguintes comandos:

# Configura o contexto local para acessar o cluster
kubectl cluster-info --context kind-kind

# Lista todos os Pods, em todos os namespaces
kubectl get po -all-namespaces

O resultado esperado será parecido com o que vimos neste post: Como listar os Pods de todos namespaces

Passo 6 – Criando um registry local

Importante: Se você está usando o MacOS na última versão é preciso fazer um pequeno ajuste antes de executar o comando abaixo. Em seu macOS, navegue até a Maça -> System Preferences -> Sharing. E desabilite AirPlay Receiver

Agora que seu cluster foi criado, vamos criar um registry local para subir nossas imagens Docker. Execute os seguintes comandos para criar e verificar se está rodando:

# Cria um registry local
docker run -d -p 5000:5000 --restart=always --name registry registry:2

# Lista os containers 
docker ps -a | grep registry

Resultado:

7687573b6fb7   registry:2             "/entrypoint.sh /etc…"   About a minute ago   Up About a minute          0.0.0.0:5000->5000/tcp     registry

Passo 7 – Publicando uma imagem docker no registry

Vamos publicar uma imagem docker para o registry, essa imagem contém uma aplicação de exemplo que usaremos para o teste de deploy no cluster, execute os seguintes comandos:

# Download da imagem a partir do repositório do google
docker pull gcr.io/google-samples/hello-app:1.0

# Rotulando a imagem para o registry local
docker tag gcr.io/google-samples/hello-app:1.0 localhost:5000/hello-app:1.0

# Subindo a imagem para o registry local
docker push localhost:5000/hello-app:1.0

# colocando o kind e registry na mesma rede
docker network connect "kind" "registry" || true

Passo 7 – Deploy da aplicação no Kubernetes

# Faz o deploy da aplicação no cluster
kubectl create deployment hello-server --image=localhost:5000/hello-app:1.0

# Lista os pods criados no namespace default
kubectl get po

Resultado:

NAME                            READY   STATUS    RESTARTS   AGE
hello-server-64679d86dd-tnk5v   1/1     Running   0          4s

Conclusão

Seu ambiente para estudos e testes está pronto! Neste tutorial aprendemos:

  1. Como criar um cluster Kubernetes local usando uma ferramenta chamada Kind;
  2. Como criar um registry local usando o docker;
  3. Como fazer o deploy de uma aplicação no cluster que criamos.

Agora que tem um cluster para testes não tem desculpa, vamos praticar o máximo possível! Neste post Guia rápido Kubernetes – Os comandos mais usados por administradores! vc vai encontrar uma lista de comandos que vão ajudar você na sua jornada de aprendizado.

Espero que tenha gostado e até o próximo post!

Aproveitando… Faça parte da minha rede: www.linkedin.com/in/eduardofrancellino

Como instalar o Docker no Windows – 2021

Docker é uma tecnologia que permite rodar aplicações de forma muito rápida, utilizando pouquíssimo recurso computacional (CPU, Memória e Disco).

No catálogo de images Docker você vai encontrar uma grande variedade de aplicativos prontinhos, de banco de dados até gerenciadores de conteúdo como o WordPress.

Neste artigo você vai aprender como instalar o docker e rodar um servidor HTTP Nginx no Windows!

Passo 1: Validando os pré-requisitos de instalação

Para instalador o docker vamos precisar:

  • Windows 10 64-bit: Pro 2004 (build 19041) ou maior, Enterprise ou Education 1909 (build 18363) or maior;
  • 4 CPUs, 4GB de RAM e pelo menos 20GB de espaço livre em disco;
  • Um processador 64-bit com Second Level Address Translation (SLAT) habilitado.

Outro recurso bem importante que vamos precisar é a virtualização de hardware. Para verificar se este recurso está ativo, abra o gerenciador de tarefas do windows, navegue até a aba Desempenho e verifique se o item Máquina Virtual está configurado conforme a figura abaixo:

Passo 1 : Download e instalação:

1 – Navegue até a página https://docs.docker.com/docker-for-windows/install/ e clique em Docker Desktop for Windows:

2 – Inicie a instalação clicando duas vezes no Docker Desktop Installer.exe e em seguida, sim para para permitir que o instalador faça alterações em seu sistema:

3 – Como pré-requisito vamos precisar instalar o WSL 2, a boa notícia é que para instalar o WSL 2 basta selecionar a opção Install required Windows components for WSL2 e o instalador do docker fará todo o trabalho para você:

4 – Ao final da instalação re-inicie a máquina clicando em closet and restart:

5 – Depois do boot vamos ver a seguinte mensagem: WS2 installation is incomplete. Fique calmo :-), isso faz parte do processo de instalação

 

6 – Para resolver é bem fácil, navegue até a página https://aka.ms/wsl2kernel e baixe o pacote de atualização:

7 – Clique duas vezes no arquivo baixado para iniciar a instalação e ao finalizar, re-inicie sua máquina:

8 – Abra a UI de configuração do Docker clicando no ícone Docker no desktop e verifique e aparece a seguinte mensagem:

Instalação finalizada!!!

Passo 2 : Validando a instalação:

Para validar a instalação vamos rodar um servidor http nginx em docker.

1 – Abra seu prompt e execute a seguinte linha de comando:

docker run --name http-server -p 8080:80 nginx:latest
Neste processo o docker irá baixar a imagem do nginx do hub.docker.com e criar um container.

2 – Para acessar a aplicação navegue até o seguinte endereço: http://localhost:8080

Agora você pode rodar aplicações prontinhas de forma muito fácil em seu Windows! Até o próximo post! 

Faça parte da minha rede: www.linkedin.com/in/eduardofrancellino