
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create your cluster
/ 20
Create your pod
/ 30
Create a Kubernetes Service
/ 30
Scale up your service
/ 20
O objetivo deste laboratório prático é transformar o código que você desenvolveu em um aplicativo conteinerizado replicado, executado no Kubernetes Engine. Para este laboratório, o código será um simples aplicativo Hello World em Node.js.
Veja um diagrama das várias partes deste laboratório, para ajudar você a entender como as peças se encaixam umas nas outras. Use o diagrama como referência à medida que avança pelo laboratório. Tudo fará sentido quando chegar ao fim e, por enquanto, você pode ignorar.
O Kubernetes é um projeto de código aberto (disponível em kubernetes.io) que pode ser executado em vários ambientes, desde laptops a clusters de vários nós com alta disponibilidade, de nuvens públicas a implantações locais, de máquinas virtuais a bare metal.
Neste laboratório, o uso de um ambiente gerenciado como o Kubernetes Engine, uma versão do Kubernetes hospedada pelo Google em execução no Compute Engine, permite que você se dedique mais na experiência do Kubernetes, em vez de configurar a infraestrutura subjacente.
vim
, emacs
ou nano
.Os próprios estudantes devem digitar os comandos para fixar o aprendizado dos conceitos principais. Muitos laboratórios vão incluir um bloco de código com os comandos necessários. Você pode copiá-los desse bloco e colar nos locais apropriados durante o laboratório.
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
Confira os requisitos para concluir o laboratório:
Clique no botão Começar o laboratório. Se for preciso pagar, você verá um pop-up para selecionar a forma de pagamento. No painel Detalhes do laboratório à esquerda, você vai encontrar o seguinte:
Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.
O laboratório ativa os recursos e depois abre a página Fazer login em outra guia.
Dica: coloque as guias em janelas separadas lado a lado.
Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.
Você também encontra o Nome de usuário no painel Detalhes do laboratório.
Clique em Seguinte.
Copie a Senha abaixo e cole na caixa de diálogo de boas-vindas.
Você também encontra a Senha no painel Detalhes do laboratório.
Clique em Seguinte.
Acesse as próximas páginas:
Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.
O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.
Depois de se conectar, vai notar que sua conta já está autenticada, e que o projeto está configurado com seu PROJECT_ID. A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:
gcloud
é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
Clique em Autorizar.
A saída será parecida com esta:
Saída:
Saída:
Exemplo de saída:
gcloud
, acesse o guia com informações gerais sobre a gcloud CLI no Google Cloud.
1. Usando o Cloud Shell, crie um servidor Node.js simples para implantar no Kubernetes Engine:
vi
é usado aqui, mas as opções nano
e emacs
também estão disponíveis no Cloud Shell. Outra opção é usar o recurso do editor da Web do Cloud Shell, conforme descrito no guia Como o Cloud Shell funciona.
server.js
pressionando Esc e depois:node
executado instalado, execute este comando para iniciar o servidor do nó (o comando não gera uma saída):8080
.Uma nova guia do navegador será aberta para mostrar seus resultados:
Em seguida, empacote esse aplicativo em um contêiner do Docker.
Dockerfile
que descreve a imagem que você quer criar. As imagens de contêiner do Docker podem ser extensões de outras imagens. Por isso, para esta imagem, usaremos uma imagem de nó atual.Este "roteiro" para a imagem Docker vai:
node
encontrada no hub do Docker;8080
;server.js
para a imagem;Dockerfile
pressionando ESC e digite:PROJECT_ID
pelo ID do projeto, encontrado no console e na seção Detalhes do laboratório:O download e a extração levarão algum tempo, mas você pode ver as barras de progresso à medida que a imagem é criada.
Após a conclusão, teste a imagem localmente executando um contêiner do Docker como um daemon na porta 8080 na imagem de contêiner que você criou.
PROJECT_ID
pelo ID do projeto, encontrado no console e na seção Detalhes do laboratório:A saída será parecida com esta:
curl
no comando do Cloud Shell:Você verá esta saída:
docker run
está disponível na referência de execução do Docker.
Depois, pare o contêiner em execução.
A saída será como esta:
[CONTAINER ID]
pelo valor fornecido na etapa anterior:A saída do console vai ser parecida com esta (seu ID do contêiner):
Agora que a imagem está funcionando conforme o esperado, envie-a para o Google Container Registry, um repositório particular para suas imagens Docker, acessível a partir dos projetos do Google Cloud.
Se aparecer, Do you want to continue (Y/N)? Digite Y.
PROJECT_ID
pelo ID do projeto, disponível no console ou na seção Detalhes do laboratório:O push inicial pode levar alguns minutos para ser concluído. Você verá as barras de progresso durante a criação.
Agora você tem uma imagem Docker em todo o projeto, que pode acessar e orquestrar.
gcr.io
). No seu ambiente, é possível ser mais específico sobre qual zona e bucket usar. Saiba mais aqui.
Agora está tudo pronto para criar seu cluster do Kubernetes Engine. Um cluster consiste em um servidor de API mestre do Kubernetes hospedado pelo Google e um conjunto de nós de trabalho. Os nós de trabalho são máquinas virtuais do Compute Engine.
gcloud
. Substitua PROJECT_ID
pelo ID do projeto, disponível no console e na seção Detalhes do laboratório:É possível ignorar os avisos que aparecem quando o cluster é criado.
A saída do console será algo como:
Outra opção é criar o cluster pelo console. Para isso, abra o menu de navegação e selecione Kubernetes Engine > Clusters do Kubernetes > Criar.
Se você selecionar Menu de navegação > Kubernetes Engine, verá que agora há um cluster Kubernetes totalmente funcional com a tecnologia do Kubernetes Engine.
É hora de implantar seu próprio aplicativo conteinerizado no cluster do Kubernetes. A partir de agora, usaremos a linha de comando kubectl
, já configurada no ambiente do Cloud Shell.
Clique em Verificar meu progresso abaixo para conferir seu andamento no laboratório.
Um pod do Kubernetes é um grupo de contêineres agrupados para fins de administração e comunicação em rede. Ele pode ter um ou vários contêineres. Aqui, você usará um contêiner criado com a imagem do Node.js armazenada no seu Container Registry particular. Ele suprirá conteúdo na porta 8080.
kubectl run
. Substitua PROJECT_ID
pelo ID do projeto, disponível no console e na seção Detalhes da conexão do laboratório:Saída:
Como você pode ver, criamos um objeto de implantação. Implantações são a maneira recomendada de criar e escalonar pods. Aqui, uma nova implantação gerencia uma réplica de pod único que executa a imagem hello-node:v1
.
Saída:
Saída:
Agora é um bom momento para testar alguns comandos kubectl
interessantes. Nenhum deles vai alterar o estado do cluster. Para conferir a documentação de referência completa, consulte Ferramenta de linha de comando (kubectl):
E para a solução de problemas:
Agora, é preciso tornar seu pod acessível por ambientes externos.
Clique em Verificar meu progresso abaixo para conferir seu andamento no laboratório.
Por padrão, o pod é acessível somente do seu IP interno dentro do cluster. Para tornar o contêiner hello-node
acessível de fora da rede virtual do Kubernetes, é necessário expor o pod como um serviço do Kubernetes.
kubectl expose
, combinado com o sinalizador --type="LoadBalancer"
. Esse sinalizador é obrigatório para a criação de um IP acessível externamente:Saída:
A flag usada nesse comando especifica que ele está usando o balanceador de carga fornecido pela infraestrutura (nesse caso, o balanceador de carga do Compute Engine). Observe que a implantação será exposta, não o pod diretamente. Isso fará com que o serviço resultante faça o balanceamento de carga do tráfego em todos os pods gerenciados pela implantação (nesse caso, apenas um pod, mas você adicionará mais réplicas posteriormente).
O mestre do Kubernetes cria o balanceador de carga e as regras de encaminhamento do Compute Engine relacionadas, pools de destino e regras de firewall para tornar o serviço totalmente acessível de fora do Google Cloud.
kubectl
para listar todos os serviços de cluster:Você verá esta saída:
Há dois endereços IP listados para o serviço hello-node, ambos usando a porta 8080. O CLUSTER-IP
é o IP interno, que é visível apenas dentro da sua rede virtual na nuvem. O EXTERNAL-IP
é o IP com balanceamento de carga externo.
EXTERNAL-IP
pode levar vários minutos para ficar disponível e visível. Se o EXTERNAL-IP
estiver ausente, aguarde alguns minutos e execute o comando novamente.
http://<EXTERNAL_IP>:8080
Até agora, você ganhou acesso a vários recursos ao migrar para contêineres e o Kubernetes. Não é preciso especificar em qual host executar a carga de trabalho, e você também se beneficia do monitoramento e da reinicialização do serviço. Agora confira os benefícios da nova infraestrutura do Kubernetes.
Clique em Verificar meu progresso abaixo para conferir seu andamento no laboratório.
Um dos poderosos recursos oferecidos pelo Kubernetes é a facilidade de escalonar seu aplicativo. Suponha que, de repente, você precise de mais capacidade. Você pode dizer ao controlador de replicação para gerenciar um novo número de réplicas para seu pod.
Saída:
Saída:
Execute o comando acima de novo até que as quatro réplicas sejam criadas.
Você verá esta saída:
Uma abordagem declarativa está sendo usada aqui. Em vez de iniciar ou interromper novas instâncias, você declara quantas instâncias precisam estar em execução o tempo todo. Os loops de reconciliação do Kubernetes garantem que a realidade corresponda ao que você solicitou e entram em ação, se necessário.
Este diagrama resume o estado do nosso cluster Kubernetes:
Clique em Verificar meu progresso abaixo para conferir seu andamento no laboratório.
Em algum momento, o aplicativo implantado na produção exigirá correções de bugs ou recursos adicionais. O Kubernetes ajuda você a implantar uma nova versão na produção sem afetar os usuários.
server.js
:server.js
pressionando Esc e depois:Agora, podemos criar e publicar uma nova imagem de contêiner no registro com uma tag incrementada (v2
, nesse caso):
PROJECT_ID
pelo ID do projeto do laboratório:O Kubernetes atualizará o controlador de replicação automaticamente para a nova versão do aplicativo. Para alterar o rótulo da imagem do contêiner em execução, é preciso editar hello-node deployment
e alterar a imagem de gcr.io/PROJECT_ID/hello-node:v1
para gcr.io/PROJECT_ID/hello-node:v2
.
kubectl edit
:Ele abre um editor de texto que mostra a configuração YAML completa da implantação. Não é preciso entender a configuração YAML completa agora. Apenas saiba que, ao atualizar o campo spec.template.spec.containers.image
na configuração, você solicita à implantação que atualize os pods com a nova imagem.
Spec
> containers
> image
e altere o número da versão de v1 para v2:Você verá esta saída:
Novos pods serão criados com a nova imagem e os pods antigos serão excluídos.
Você verá esta saída. Talvez seja necessário executar novamente o comando acima para ver o seguinte:
Enquanto isso acontece, os usuários dos serviços não sofrerão nenhuma interrupção. Depois de algum tempo, eles começarão a acessar a nova versão do aplicativo. Encontre mais detalhes sobre as atualizações graduais na documentação Como realizar uma atualização gradual.
Esperamos que, com esses recursos de implantação, escalonamento e atualização, depois de configurar o cluster do Kubernetes Engine, você concorde que o Kubernetes ajuda você a se concentrar no aplicativo e não na infraestrutura.
Faça nosso teste para avaliar seus conhecimentos sobre o Google Cloud Platform. Selecione todas as opções corretas.
Isso conclui este laboratório prático com o Kubernetes. Essa é apenas uma pequena parte dessa tecnologia. Teste com seus próprios pods, controladores de replicação e serviços. Confira também as sondagens de atividade (verificações de integridade) e use a API Kubernetes diretamente.
Consulte Gerenciar implantações usando o Kubernetes Engine ou confira estas sugestões:
Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.
Manual atualizado em 14 de março de 2024
Laboratório testado em 14 de março de 2024
Copyright 2025 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.
Este conteúdo não está disponível no momento
Você vai receber uma notificação por e-mail quando ele estiver disponível
Ótimo!
Vamos entrar em contato por e-mail se ele ficar disponível
One lab at a time
Confirm to end all existing labs and start this one