Introdução
O Kubernetes é uma plataforma de orquestração de containers que automatiza a implantação, o escalonamento e o gerenciamento de aplicações conteinerizadas. Este desafio explora a arquitetura do Kubernetes, abrangendo os componentes que formam um cluster e como eles interagem entre si.
Componentes do Plano de Controle do Kubernetes
O plano de controle (control plane) do Kubernetes gerencia o estado global do cluster, bem como a implantação e o escalonamento das aplicações. Os principais componentes do plano de controle incluem:
- kube-apiserver: A interface de entrada para o plano de controle, processando todas as requisições de gerenciamento do cluster.
- etcd: Um banco de dados chave-valor distribuído que armazena todos os dados de configuração do cluster.
- kube-scheduler: Responsável por selecionar em quais nós os pods devem ser executados.
- kube-controller-manager: Executa os processos de controle que monitoram e mantêm o estado dos diversos objetos do Kubernetes.
Tarefas
Sua tarefa é recuperar e exibir o status dos componentes do plano de controle, incluindo o kube-apiserver, etcd, kube-scheduler e kube-controller-manager.
Requisitos
- Utilize um comando
kubectlpara obter o status dos componentes do plano de controle. - Execute o comando dentro do diretório
/home/labex/project. - A saída deve apresentar o estado de saúde de cada componente do plano de controle.
Exemplo
Abaixo, um exemplo do resultado esperado ao consultar o status dos componentes:
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
etcd-0 Healthy {"health":"true","reason":""}
scheduler Healthy ok
Componentes de Nó do Kubernetes
Os componentes de nó (node components) são executados em cada nó do cluster, mantendo os containers em execução e fornecendo o ambiente de runtime para as aplicações. Eles incluem:
- kubelet: O agente que roda em cada nó, garantindo que os containers estejam funcionando conforme o esperado.
- kube-proxy: O proxy de rede que gerencia as regras de rede nos nós, permitindo a comunicação com os containers.
Tarefas
Exiba informações sobre os nós ativos no cluster Kubernetes, incluindo o nome do nó, status e outros detalhes pertinentes.
Requisitos
- Utilize um comando
kubectlpara listar os nós do cluster. - Execute o comando no diretório
/home/labex/project. - A saída deve detalhar cada nó presente no ambiente.
Exemplo
Exemplo de saída esperada ao listar os nós:
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 2m52s v1.26.1
Componentes de Pod do Kubernetes
Um Pod é a menor unidade de implantação no Kubernetes, representando uma única instância de um processo em execução. Cada pod pode conter um ou mais containers que compartilham o mesmo namespace de rede e volumes de armazenamento.
Tarefas
- Crie um arquivo chamado
simple-pod.yamlcom a configuração de um pod para um container Nginx. - Implante o pod utilizando o comando
kubectlapropriado. - Exiba as informações sobre os pods em execução no cluster.
Requisitos
- Crie o arquivo
simple-pod.yamlno diretório/home/labex/projectconfigurando um pod chamadosimple-podcom a imagemnginx. - Use o
kubectlpara criar o pod a partir do arquivo YAML. - Use outro comando
kubectlpara listar os pods ativos.
Exemplo
Exemplo de saída esperada durante a criação e listagem:
pod/simple-pod created
NAME READY STATUS RESTARTS AGE
simple-pod 1/1 Running 0 29s
Componentes de Serviço do Kubernetes
Um Service (serviço) é uma abstração que define um conjunto lógico de pods e uma política para acessá-los. Os componentes de um serviço incluem:
- IP do Serviço: Um endereço IP virtual atribuído ao serviço.
- Porta do Serviço: O número da porta vinculada ao serviço.
- Endpoint: Uma lista de endereços IP e portas que apontam para os pods reais por trás do serviço.
Tarefas
- Crie um arquivo chamado
nginx-service.yamlcom a configuração de um serviço para o pod Nginx. - Implante o serviço utilizando o comando
kubectladequado. - Exiba as informações sobre os serviços ativos no cluster.
Requisitos
- Crie o arquivo
nginx-service.yamlno diretório/home/labex/projectpara um serviço chamadonginx-serviceque exponha a porta 80. - Use o
kubectlpara criar o serviço a partir do arquivo YAML. - Use outro comando
kubectlpara listar os serviços do cluster.
Exemplo
Exemplo de saída esperada ao listar os serviços:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5m42s
nginx-service ClusterIP 10.96.184.71 <none> 80/TCP 4s
Resumo
Neste desafio, exploramos a arquitetura fundamental do Kubernetes, passando pelo plano de controle, nós, pods e serviços. Aprendemos a verificar a integridade dos componentes do sistema, a implantar um pod básico e a configurar um serviço para permitir o acesso. Compreender como esses elementos interagem é o alicerce necessário para qualquer profissional que deseje implantar e gerenciar aplicações em escala com Kubernetes.


