Entrar ou criar conta

ULC Lab · implementação reproduzível

Laboratório: Cluster Kubernetes Local com Deploy de Aplicação e Monitoramento Prometheus

Você terá um cluster Kubernetes funcional em três máquinas virtuais, com uma aplicação de exemplo e monitoramento Prometheus. O laboratório leva cerca de 2 horas e meia.

Orquestração de Contêineres com Kubernetes para ambientes de produção
Ligado ao treinamento Orquestração de Contêineres com Kubernetes para ambientes de produção
ULC-LAB-AUTO-0004 · Status de validaçãoNão validado pela Upnetix: roteiro derivado da documentação oficial, para você executar e validar
Duração estimada
150 min
Passos
13
Validações
5
Versões da documentação consultada
Kubernetes a versão estável atual · Prometheus a versão estável atual · kubectl a versão estável atual · kubeadm a versão estável atual · Docker a versão estável atual
Objetivo

Este laboratório ensina a criar um cluster Kubernetes multi-nó local, implantar uma aplicação web simples e integrar o monitoramento com Prometheus. O objetivo é entender, na prática, como orquestrar workloads resilientes e escaláveis em ambientes reais, como redes de fibra dedicadas da Upnetix.

Topologia

Três máquinas virtuais em rede privada: um nó master (control-plane) e dois nós worker. Todos se comunicam via rede 192.168.56.0/24. O usuário acessa a aplicação e o dashboard Prometheus via browser no host.


Host (192.168.56.1)
   |
[VM1: Master 192.168.56.10]
   |
--------------------------
|                        |
[VM2: Worker 192.168.56.11]   [VM3: Worker 192.168.56.12]

Equipamentos e software

ItemRequisito, licença ou versão
Máquina Virtual (Master)2 vCPU, 2GB RAM, 1 interface de rede, Ubuntu 22.04
Máquina Virtual (Worker 1)2 vCPU, 2GB RAM, 1 interface de rede, Ubuntu 22.04
Máquina Virtual (Worker 2)2 vCPU, 2GB RAM, 1 interface de rede, Ubuntu 22.04
KubernetesApache 2.0 · a versão estável atual
PrometheusApache 2.0 · a versão estável atual
kubectlApache 2.0 · a versão estável atual
kubeadmApache 2.0 · a versão estável atual
DockerApache 2.0 · a versão estável atual

Roteiro

  1. Preparar as Máquinas Virtuais

    Crie três VMs Ubuntu 22.04, cada uma com IP fixo na faixa 192.168.56.10-12. Garanta conectividade entre elas. Isso simula um cluster real.

    O que você deve ver: Ping entre as VMs funcionando.

  2. Instalar Docker em todas as VMs

    Kubernetes precisa de um container runtime. Docker é o mais comum para laboratório.

    sudo apt update && sudo apt install -y docker.io
    sudo systemctl enable docker && sudo systemctl start docker

    O que você deve ver: docker --version retorna versão atual.

  3. Desabilitar Swap

    O kubelet exige swap desabilitado por padrão. Swap ativo causa falhas imprevisíveis.

    sudo swapoff -a
    sudo sed -i '/ swap / s/^/#/' /etc/fstab

    O que você deve ver: free -h mostra swap zerado.

  4. Instalar kubeadm, kubelet e kubectl

    Essas ferramentas são essenciais para instalar e operar o cluster.

    sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl
    sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
    echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl

    O que você deve ver: kubectl version mostra client instalado.

  5. Inicializar o Cluster Kubernetes no Master

    O kubeadm simplifica a criação do cluster. Use o IP do master para garantir comunicação entre os nós.

    sudo kubeadm init --apiserver-advertise-address=192.168.56.10 --pod-network-cidr=10.244.0.0/16

    O que você deve ver: Mensagens de sucesso e comando kubeadm join exibido.

  6. Configurar kubectl no Master

    Permite operar o cluster como usuário normal.

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    O que você deve ver: kubectl get nodes retorna o master (NotReady).

  7. Instalar rede de pods (CNI) com Flannel

    Kubernetes exige um plugin de rede para comunicação entre pods. Flannel é simples para laboratório.

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    O que você deve ver: kubectl get pods -n kube-system mostra pods flannel rodando.

  8. Ingressar os Workers no Cluster

    Execute o comando kubeadm join exibido no passo 5 em cada worker. Isso conecta os nós ao cluster.

    sudo kubeadm join ... (consulte a saída do passo 5)

    O que você deve ver: kubectl get nodes mostra master e dois workers Ready.

  9. Deploy de Aplicação Exemplo (nginx)

    Implante um deployment nginx para testar workloads.

    kubectl create deployment nginx --image=nginx
    kubectl expose deployment nginx --port=80 --type=NodePort

    O que você deve ver: kubectl get svc mostra nginx com NodePort.

  10. Acessar a Aplicação Exemplo

    Descubra a porta NodePort e acesse via browser do host.

    kubectl get svc nginx

    O que você deve ver: Acesso ao nginx via http://192.168.56.11:<porta> ou http://192.168.56.12:<porta>.

  11. Deploy do Prometheus via YAML oficial

    Prometheus permite monitorar o cluster. Use o manifest oficial simplificado.

    kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/bundle.yaml

    O que você deve ver: kubectl get pods -n default mostra pods Prometheus rodando.

  12. Expor Prometheus para Acesso Local

    Crie um NodePort para acessar o Prometheus pelo browser.

    kubectl expose deployment prometheus-operator --type=NodePort --port=8080 --target-port=8080

    O que você deve ver: kubectl get svc mostra prometheus-operator com NodePort.

  13. Acessar o Dashboard do Prometheus

    Use o IP de um worker e a porta NodePort para acessar o dashboard.

    kubectl get svc prometheus-operator

    O que você deve ver: Acesso ao Prometheus via browser.

Como saber que funcionou

TesteComandoCritério
Verificar todos os nós prontoskubectl get nodesTodos com STATUS Ready.
Verificar pods do nginx rodandokubectl get podsSTATUS Running para pods nginx.
Acessar nginx do browserPágina padrão do nginx exibida.
Verificar pods do Prometheuskubectl get pods -n defaultPods prometheus-operator Running.
Acessar dashboard PrometheusInterface Prometheus acessível via browser.

Troubleshooting

SintomaCausa provávelCorreção
kubectl get nodes mostra NotReadyRede de pods não instalada ou falha no CNIVerifique o passo de instalação do Flannel e logs dos pods kube-system.
Pods em CrashLoopBackOffImagem errada ou falta de recursosVerifique logs com kubectl logs <pod> e ajuste recursos.
Não acessa nginx via NodePortFirewall bloqueando porta ou serviço não expostoVerifique firewall das VMs e se o NodePort está correto.
Prometheus não sobeManifest incompleto ou conflito de portasConsulte logs do pod e ajuste o manifest conforme documentação.
kubectl não conecta ao clusterConfiguração ~/.kube/config incorretaRefaça o passo de configuração do kubectl no master.

Segurança e hardening

  • Nunca exponha NodePort em ambientes de produção sem firewall.
  • Altere as senhas padrão do Prometheus e do cluster.
  • Restrinja o acesso ao dashboard Prometheus por IP ou autenticação.
  • Desabilite portas desnecessárias nas VMs.
  • Não use kubeadm init com --apiserver-advertise-address=0.0.0.0 em produção.

Checklist final

Referências

  1. Kubernetes - Instalação com kubeadm · Kubernetes (CNCF) (kubernetes.io)
  2. Kubernetes - Deployments · Kubernetes (CNCF) (kubernetes.io)
  3. Kubernetes - Serviços · Kubernetes (CNCF) (kubernetes.io)
  4. Prometheus - Getting Started · Prometheus (CNCF) (prometheus.io)
Verificação editorial
Publicado
09/09/2026
Última revisão
09/09/2026
Versão do conteúdo
1.0
Referências
4 oficiais
Revisão técnica
redação e revisão por IA, URLs conferidas na publicação
Status
Atual
Encontrou um erro? Escreva para comercial@upnetix.com.br com o endereço da página. A revisão semestral por IA nunca altera comandos ou configurações sem passar pela fila de revisão.