Entrar ou criar conta

ULC Lab · implementação reproduzível

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

Você terá um cluster Kubernetes funcional em uma VM, com uma aplicação containerizada rodando e monitoramento básico via Prometheus. O laboratório pode ser concluído em cerca de 2 horas.

Kubernetes do zero à orquestração produtiva
Ligado ao treinamento Kubernetes do zero à orquestração produtiva
ULC-LAB-DEVO-0003 · Status de validaçãoNão validado pela Upnetix: roteiro derivado da documentação oficial, para você executar e validar
Duração estimada
120 min
Passos
12
Validações
4
Versões da documentação consultada
Kubernetes a versão estável atual · kubeadm a versão estável atual · Docker ou containerd a versão estável atual · Prometheus a versão estável atual · kubectl a versão estável atual · nginx (container) a versão estável atual
Objetivo

Este laboratório mostra, na prática, como instalar e configurar um cluster Kubernetes de nó único, implantar uma aplicação de exemplo e ativar monitoramento com Prometheus. O objetivo é entender o ciclo completo: provisionamento, deploy, exposição de serviços e coleta de métricas, usando apenas software livre. Ao final, você terá domínio dos comandos essenciais e dos arquivos de configuração mínimos para operar um cluster de containers em ambiente controlado.

Topologia

Uma máquina virtual (192.168.56.10) executa todos os componentes: kube-apiserver, kubelet, kube-proxy, etcd, Prometheus, aplicação de exemplo (nginx). O acesso externo ocorre via porta 80 (aplicação) e 9090 (Prometheus).

           +-------------------------+
           |      Usuário SSH       |
           +-----------+-----------+
                       |
             192.168.56.10 (VM)
   +-------------------+-------------------+
   | kube-apiserver, kubelet, etcd, nginx |
   | kube-proxy, Prometheus               |
   +-------------------+-------------------+
           |         |           |
         80        6443        9090
     (nginx)   (API server) (Prometheus)

Equipamentos e software

ItemRequisito, licença ou versão
Máquina virtual (VirtualBox, KVM, VMware ou similar)2 vCPU, 3 GB RAM, 20 GB disco, 1 interface bridged ou NAT
KubernetesApache 2.0 · a versão estável atual
kubeadmApache 2.0 · a versão estável atual
Docker ou containerdApache 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
nginx (container)2-clause BSD · a versão estável atual

Roteiro

  1. Preparar a VM e o sistema operacional

    Atualize o sistema e desabilite swap. O swap interfere no kubelet e pode causar falhas imprevisíveis.

    sudo apt update && sudo apt upgrade -y
    sudo swapoff -a
    sudo sed -i '/ swap / s/^/#/' /etc/fstab

    O que você deve ver: Sistema atualizado, swap desabilitado permanentemente.

  2. Instalar containerd

    O Kubernetes precisa de um runtime de containers. O containerd é recomendado por ser simples e suportado oficialmente.

    sudo apt install -y containerd
    sudo mkdir -p /etc/containerd
    sudo containerd config default | sudo tee /etc/containerd/config.toml
    sudo systemctl restart containerd

    O que você deve ver: containerd rodando e habilitado.

  3. Instalar kubeadm, kubelet e kubectl

    Essas ferramentas são essenciais para inicializar, gerenciar 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: kubelet, kubeadm e kubectl instalados.

  4. Inicializar o cluster Kubernetes

    O kubeadm automatiza a configuração inicial do cluster. O parâmetro --pod-network-cidr é necessário para a rede de pods.

    sudo kubeadm init --pod-network-cidr=10.244.0.0/16

    O que você deve ver: Cluster inicializado. Mensagem final exibe comandos para configurar o kubectl.

  5. Configurar o kubectl para o usuário

    Permite que o usuário execute comandos kubectl sem sudo.

    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 pronto para uso pelo usuário atual.

  6. Instalar plugin de rede (CNI Flannel)

    O Kubernetes exige um plugin CNI para comunicação entre pods. O Flannel é simples e adequado para laboratório.

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

    O que você deve ver: Pods do Flannel criados e rodando em kube-system.

  7. Permitir agendamento de pods no master (single node)

    Por padrão, o master não agenda pods. Para laboratório, remova o taint.

    kubectl taint nodes --all node-role.kubernetes.io/control-plane-

    O que você deve ver: Taint removido. Pods podem ser agendados no nó.

  8. Implantar aplicação de exemplo (nginx)

    O nginx é um servidor web leve, útil para validar o funcionamento do cluster.

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

    O que você deve ver: Deployment e service criados. nginx rodando como pod.

  9. Descobrir porta NodePort do nginx

    O NodePort expõe o serviço para acesso externo.

    kubectl get svc nginx

    O que você deve ver: Porta NodePort (ex: 30000-32767) listada para acesso ao nginx.

  10. Instalar Prometheus via manifest oficial

    Prometheus coleta métricas do cluster. Usaremos o manifest recomendado para simplicidade.

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

    O que você deve ver: Prometheus Operator e CRDs criados.

  11. Criar instância Prometheus simples

    Crie um recurso Prometheus para iniciar a coleta de métricas.

    Consulte a documentação do Prometheus Operator para criar um recurso Prometheus básico: https://prometheus.io/docs/prometheus/latest/getting_started/

    O que você deve ver: Pod Prometheus rodando.

  12. Expor Prometheus para acesso externo

    Permite acessar a interface web do Prometheus do navegador.

    kubectl port-forward svc/prometheus-operated 9090:9090 &

    O que você deve ver: Prometheus acessível em http://localhost:9090

Como saber que funcionou

TesteComandoCritério
Verificar status dos podskubectl get pods --all-namespacesTodos os pods em Running ou Completed.
Testar acesso ao nginxcurl http://localhost:<NodePort>Página padrão do nginx exibida.
Verificar interface do PrometheusAcesse http://localhost:9090 no navegadorInterface web do Prometheus carregada.
Verificar coleta de métricas do KubernetesNa interface do Prometheus, busque por 'up' ou 'kube_'Métricas do cluster disponíveis.

Troubleshooting

SintomaCausa provávelCorreção
Pods stuck em ContainerCreatingPlugin de rede (CNI) não instalado ou falhaReaplique o manifest do Flannel e verifique logs com 'kubectl logs'.
kubectl não conecta ao clusterArquivo kubeconfig não copiado ou permissões incorretasRepita o passo de configuração do kubectl.
nginx não responde externamenteNodePort não liberado no firewall ou porta erradaVerifique a porta NodePort e ajuste regras de firewall da VM.
Prometheus não abre no navegadorPort-forward não ativo ou serviço Prometheus não iniciadoReinicie o port-forward e confirme se o pod está rodando.

Segurança e hardening

  • Nunca exponha NodePort ou Prometheus diretamente para a internet sem autenticação.
  • Remova o taint do master apenas em ambientes de laboratório.
  • Restrinja acesso SSH à VM.
  • Atualize sempre os manifests e imagens para evitar vulnerabilidades conhecidas.
  • Não utilize credenciais padrão em ambientes reais.

Checklist final

Referências

  1. Kubernetes - Getting Started · Kubernetes (CNCF) (kubernetes.io)
  2. Instalando plugins de rede · Kubernetes (CNCF) (kubernetes.io)
  3. Documentação do Prometheus · Prometheus (CNCF) (prometheus.io)
  4. kubectl Cheat Sheet · Kubernetes (CNCF) (kubernetes.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.