Seu Primeiro Laboratório Kubernetes

KubernetesBeginner
Pratique Agora

Introdução

Bem-vindo ao seu primeiro laboratório Kubernetes! Este laboratório irá apresentá-lo ao Kubernetes, um sistema poderoso para gerenciar aplicações em contêineres. Ao final deste laboratório, você terá criado e interagido com sua primeira implantação Kubernetes.

Não se preocupe se você é novo em contêineres ou orquestração - explicaremos cada conceito à medida que avançamos. Vamos começar nossa jornada no mundo do Kubernetes!

Nota: Este laboratório requer a obtenção de imagens (pulling images), mas usuários Free não podem acessar a internet do ambiente do laboratório. Este laboratório é exclusivo para usuários Pro.

Iniciando Seu Cluster Kubernetes

Começaremos criando um cluster Kubernetes local usando o Minikube. O Minikube permite que você execute um cluster Kubernetes de nó único em seu computador, perfeito para aprendizado e desenvolvimento.

Primeiro, abra seu terminal. Você deve estar no diretório /home/labex/project. Se não tiver certeza, você pode mudar para este diretório digitando:

cd /home/labex/project

Agora, vamos iniciar o cluster Minikube:

Nota: Usuários Free não podem se conectar à internet, então o minikube já está pré-iniciado quando você inicia o laboratório. Você pode pular esta etapa. Atualize para um usuário pro para praticar a inicialização do cluster por conta própria.

Somente Usuários Pro
minikube start
Minikube cluster initialization

Este comando inicializa um cluster Kubernetes em sua máquina local. Veja o que está acontecendo nos bastidores:

  1. Minikube cria uma máquina virtual (VM) em seu computador.
  2. Ele instala e configura o Kubernetes dentro desta VM.
  3. Ele configura a rede para que seu computador possa se comunicar com o cluster.

Este processo pode levar alguns minutos. Você verá muita saída (output) enquanto o Minikube trabalha. Não se preocupe se você não entender tudo - o importante é esperar por uma mensagem dizendo "Done!" no final.

Criando Sua Primeira Implantação (Deployment)

Agora que nosso cluster está em execução, vamos criar nossa primeira implantação Kubernetes. Uma implantação (deployment) é um objeto Kubernetes que gerencia um grupo de pods idênticos. (Não se preocupe, explicaremos o que são pods em breve!)

Criaremos uma implantação que executa um único contêiner de servidor web NGINX. NGINX é um servidor web popular que usaremos para este exemplo.

Execute este comando:

kubectl create deployment hello-kubernetes --image=nginx:latest --port=80

Vamos detalhar isso:

  • kubectl é a ferramenta de linha de comando para interagir com o Kubernetes.
  • create deployment diz ao Kubernetes para criar uma nova implantação.
  • hello-kubernetes é o nome que estamos dando à nossa implantação.
  • --image=nginx:latest especifica que queremos usar a versão mais recente da imagem Docker do NGINX.
  • --port=80 diz ao Kubernetes que o contêiner ouvirá na porta 80 (a porta padrão para tráfego web).

Após executar este comando, você deve ver:

deployment.apps/hello-kubernetes created

Isso significa que o Kubernetes criou sua implantação com sucesso. Mas o que exatamente ele fez?

  1. O Kubernetes baixou a imagem Docker do NGINX.
  2. Ele criou um pod - um grupo de um ou mais contêineres - e iniciou o contêiner NGINX dentro dele.
  3. Ele configurou a rede para que o pod possa ser acessado na porta 80.

Inspecionando Sua Implantação (Deployment)

Agora que criamos uma implantação, vamos dar uma olhada mais de perto no que o Kubernetes configurou para nós.

Primeiro, verifique o status da nossa implantação:

kubectl get deployments

Você deve ver algo como isto:

NAME               READY   UP-TO-DATE   AVAILABLE   AGE
hello-kubernetes   1/1     1            1           2m

Esta saída nos diz:

  • READY: 1/1 significa que um pod está pronto de um pod desejado.
  • UP-TO-DATE: 1 significa que um pod está executando a configuração mais recente.
  • AVAILABLE: 1 significa que um pod está disponível para servir tráfego.

Em seguida, vamos olhar para os pods que nossa implantação criou:

kubectl get pods

Você deve ver algo como:

NAME                                READY   STATUS    RESTARTS   AGE
hello-kubernetes-6b89d599b9-x7tpv   1/1     Running   0          3m

O nome exato do pod será diferente, mas você deve ver um pod com o status "Running" (Em execução). Este pod contém nosso contêiner NGINX.

Se você não vir um pod em execução, espere um minuto e tente novamente. O Kubernetes ainda pode estar criando o pod ou baixando a imagem NGINX.

Para obter informações mais detalhadas sobre nosso pod, execute:

kubectl describe pod hello-kubernetes-6b89d599b9-x7tpv

Nota: Substitua hello-kubernetes-6b89d599b9-x7tpv pelo nome do seu pod, conforme mostrado na saída de kubectl get pods.

Este comando exibirá muitas informações. Não se preocupe em entender tudo agora. Coisas importantes a notar:

  • Status: Deve ser "Running" (Em execução)
  • IP: O endereço IP interno do pod
  • Containers: Informações sobre o contêiner NGINX em execução no pod

Se você vir algum erro nesta saída, eles podem ajudar a diagnosticar problemas com seu pod.

Acessando Sua Aplicação

Agora que nossa implantação está em execução, vamos acessar o servidor web NGINX que implantamos.

Em um ambiente Kubernetes típico, criaríamos um Service (Serviço) para expor nossa implantação à rede. Para simplificar neste ambiente local, usaremos o encaminhamento de porta (port forwarding) em vez disso.

Execute este comando:

kubectl port-forward $(kubectl get pods -o name) 8080:80

Este comando faz o seguinte:

  • $(kubectl get pods -o name) obtém o nome do nosso pod.
  • 8080:80 diz ao Kubernetes para encaminhar o tráfego da porta 8080 em sua máquina local para a porta 80 no pod.

Você não verá nenhuma saída, mas o comando continuará em execução. Isso é normal!

Agora, abra uma nova janela do terminal e execute:

curl http://localhost:8080
NGINX welcome page display

Você deve ver conteúdo HTML - esta é a página de boas-vindas do NGINX!

Se você não vir o HTML:

  • Certifique-se de que o comando de encaminhamento de porta ainda está em execução no outro terminal.
  • Verifique se você digitou o comando curl corretamente.
  • Tente acessar http://localhost:8080 em um navegador da web se o curl não funcionar.

Para parar o encaminhamento de porta, volte para a janela do terminal original e pressione Ctrl+C.

Limpeza (Cleanup)

Ótimo trabalho! Você implantou e acessou com sucesso uma aplicação no Kubernetes. Agora, vamos limpar nossos recursos.

Primeiro, exclua nossa implantação:

kubectl delete deployment hello-kubernetes

Você deve ver:

deployment.apps "hello-kubernetes" deleted

Este comando diz ao Kubernetes para remover a implantação e todos os recursos associados, incluindo o pod.

Verifique se a implantação e o pod foram removidos:

kubectl get deployments
kubectl get pods

Ambos os comandos devem retornar "No resources found in default namespace." (Nenhum recurso encontrado no namespace padrão.)

Se você ainda vir recursos, espere um momento e tente novamente. O Kubernetes ainda pode estar no processo de removê-los.

Finalmente, pare o cluster Minikube:

minikube stop

Isso para a máquina virtual Minikube, mas preserva o estado do cluster em sua máquina. Você pode iniciá-lo novamente mais tarde com minikube start.

Se você quiser remover completamente o cluster Minikube, pode executar minikube delete. No entanto, isso não é necessário por enquanto.

Resumo

Parabéns! Neste laboratório, você deu seus primeiros passos com o Kubernetes. Você aprendeu como:

  1. Iniciar um cluster Kubernetes local usando o Minikube
  2. Criar uma implantação usando o kubectl
  3. Inspecionar sua implantação e os pods que ela cria
  4. Acessar sua aplicação implantada usando o encaminhamento de porta (port forwarding)
  5. Limpar seus recursos e parar seu cluster

Essas são habilidades fundamentais que formam a base do trabalho com o Kubernetes. À medida que você continua aprendendo, você construirá sobre esses fundamentos para criar aplicações mais complexas e entender conceitos mais avançados do Kubernetes.

Lembre-se, o Kubernetes é um sistema poderoso e complexo. É normal se alguns conceitos ainda não estiverem claros - aprender Kubernetes é uma jornada. Continue praticando e você gradualmente construirá uma compreensão mais profunda. Boa sorte com sua aventura de aprendizado do Kubernetes!