Entrar ou criar conta

ULC Lab · implementação reproduzível

Laboratório: Cluster Kubernetes com Helm e Prometheus em Nuvem Privada

Você terá um cluster Kubernetes funcional em três máquinas virtuais, com Helm instalado e Prometheus monitorando o ambiente. A execução leva cerca de 2 horas.

Kubernetes do zero à integração com nuvem privada
Ligado ao treinamento Kubernetes do zero à integração com nuvem privada
ULC-LAB-CLOU-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 (kubeadm, kubelet, kubectl) a versão estável atual · Helm a versão estável atual · Prometheus a versão estável atual
Objetivo

Este laboratório ensina como criar um cluster Kubernetes do zero em ambiente privado, instalar Helm para gerenciar aplicações e configurar Prometheus para monitoramento. O foco é a prática de integração de componentes essenciais, preparando para operar aplicações resilientes em nuvens privadas.

Topologia

Três VMs em rede privada: um nó master (192.168.56.10) e dois nós worker (192.168.56.11 e 192.168.56.12). Todos conectados via rede virtual. O master gerencia o cluster, os workers executam cargas. Helm e Prometheus são instalados no cluster.

         +-------------------+
         |  VM1: Master      |
         |  192.168.56.10    |
         +---------+---------+
                   |
   ----------------+----------------
   |                               |
+--+-------------+         +-------+-------------+
| VM2: Worker    |         | VM3: Worker        |
| 192.168.56.11  |         | 192.168.56.12      |
+----------------+         +--------------------+

Equipamentos e software

ItemRequisito, licença ou versão
VM ou máquina físicaCPU dual-core, 2 GB RAM, 20 GB disco, 1 interface de rede, Ubuntu 22.04 LTS ou similar
Kubernetes (kubeadm, kubelet, kubectl)Apache 2.0 · a versão estável atual
HelmApache 2.0 · a versão estável atual
PrometheusApache 2.0 · a versão estável atual

Roteiro

  1. Preparar as VMs e rede privada

    Garanta três VMs acessíveis entre si, com IPs fixos na faixa 192.168.56.10-12. O master deve ter acesso SSH aos workers. O porquê: isolamento e controle total do ambiente.

    O que você deve ver: Ping entre as VMs funciona. SSH do master para os workers sem senha (use ssh-copy-id).

  2. Configurar pré-requisitos do Kubernetes

    Desative swap, ajuste sysctl e instale dependências. O Kubernetes exige swap desativado para garantir previsibilidade.

    sudo swapoff -a
    sudo sed -i '/ swap / s/^/#/' /etc/fstab
    sudo modprobe br_netfilter
    echo 'net.bridge.bridge-nf-call-iptables=1' | sudo tee -a /etc/sysctl.d/k8s.conf
    sudo sysctl --system
    sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl

    O que você deve ver: Swap desativado e sysctl ajustado em todas as VMs.

  3. Instalar Docker como runtime de contêiner

    O Kubernetes precisa de um runtime compatível. Docker é o mais comum para laboratórios.

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

    O que você deve ver: Docker ativo em todas as VMs. 'docker ps' mostra lista vazia.

  4. Instalar Kubernetes (kubeadm, kubelet, kubectl)

    Esses componentes são essenciais: kubeadm para inicialização, kubelet para execução, kubectl para administração.

    sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
    sudo apt-add-repository "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main"
    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl

    O que você deve ver: kubeadm, kubelet e kubectl disponíveis em todas as VMs.

  5. Inicializar o cluster Kubernetes no master

    O master orquestra o cluster. O comando abaixo inicializa o cluster e define o pod network CIDR.

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

    O que você deve ver: Mensagem de sucesso com token de join para os workers.

  6. Configurar kubectl no master

    Permite ao usuário controlar o cluster 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 get nodes' mostra apenas o master (NotReady).

  7. Instalar rede de pods (CNI Flannel)

    O Kubernetes exige uma rede de pods para comunicação interna. Flannel é simples e aberto.

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

    O que você deve ver: Pods do flannel iniciam e o master fica Ready.

  8. Adicionar os workers ao cluster

    Os workers executam aplicações. Use o comando de join gerado pelo kubeadm.

    sudo kubeadm join 192.168.56.10:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

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

  9. Instalar Helm no master

    Helm facilita a instalação de aplicações no Kubernetes.

    curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

    O que você deve ver: 'helm version' retorna versão instalada.

  10. Adicionar repositório Helm stable

    Para instalar charts populares, adicione o repositório padrão.

    helm repo add stable https://charts.helm.sh/stable
    helm repo update

    O que você deve ver: Repositório stable adicionado e atualizado.

  11. Instalar Prometheus via Helm

    Prometheus monitora o cluster. Usar Helm simplifica a implantação.

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm repo update
    helm install prometheus prometheus-community/prometheus

    O que você deve ver: 'kubectl get pods' mostra pods do Prometheus rodando.

  12. Expor o Prometheus para acesso externo (NodePort)

    Permite acessar a interface web do Prometheus pelo IP do master.

    kubectl patch svc prometheus-server -p '{"spec": {"type": "NodePort"}}'

    O que você deve ver: 'kubectl get svc' mostra o prometheus-server com um NodePort atribuído.

Como saber que funcionou

TesteComandoCritério
Verificar status dos nóskubectl get nodesTodos os nós com STATUS Ready
Verificar pods do Prometheuskubectl get podsPods do Prometheus em STATUS Running
Acessar interface web do PrometheusAcesso via http://<IP-do-master>:<NodePort> exibe dashboard do Prometheus
Verificar Helm funcionandohelm listPrometheus listado como release instalado

Troubleshooting

SintomaCausa provávelCorreção
Nó worker não aparece como ReadyRede de pods não instalada ou erro no comando de joinReaplique o Flannel e confira o comando de join
Pods do Prometheus não iniciamRecursos insuficientes ou erro de configuraçãoVerifique logs com 'kubectl logs' e ajuste recursos das VMs
Não acessa Prometheus via NodePortFirewall bloqueando porta ou serviço não expostoLibere a porta no firewall e confirme o NodePort atribuído
kubectl retorna erro de permissãoConfiguração do kubeconfig incorretaRefaça a cópia do admin.conf para $HOME/.kube/config

Segurança e hardening

  • Restrinja o acesso SSH apenas a IPs confiáveis
  • Altere o token de join após uso
  • Não exponha portas NodePort para a internet pública sem autenticação
  • Aplique atualizações de segurança do sistema operacional e dos componentes Kubernetes

Checklist final

Referências

  1. Kubernetes - Instalação via kubeadm · Kubernetes (CNCF) (kubernetes.io)
  2. Kubernetes - Inicialização do cluster · Kubernetes (CNCF) (kubernetes.io)
  3. Helm - Instalação · Helm (CNCF) (helm.sh)
  4. Prometheus - Documentação oficial · 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.