Entrar ou criar conta

ULC Lab · implementação reproduzível

Laboratório: Orquestração de IoT ponta a ponta com KubeEdge, Mosquitto e Prometheus

Você terá um ambiente funcional de IoT com KubeEdge, simulando um cluster Kubernetes na nuvem, um nó de borda, um broker MQTT e monitoramento Prometheus. Tudo rodando em VMs ou máquinas físicas comuns em cerca de 2 horas.

KubeEdge do zero à orquestração massiva de IoT
Ligado ao treinamento KubeEdge do zero à orquestração massiva de IoT
ULC-LAB-IOT-0002 · 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
11
Validações
4
Versões da documentação consultada
Kubernetes a versão estável atual · KubeEdge a versão estável atual · Eclipse Mosquitto a versão estável atual · Prometheus a versão estável atual
Objetivo

Este laboratório mostra como orquestrar aplicações de IoT usando KubeEdge, conectando dispositivos simulados a um cluster Kubernetes, com comunicação MQTT e monitoramento. Você vai entender, na prática, como edge nodes interagem com a nuvem, como os dados fluem via MQTT e como monitorar o ambiente.

Topologia

Três máquinas (ou VMs) em rede privada: uma para o cluster Kubernetes (192.168.56.10), uma para o edge node KubeEdge (192.168.56.20) e uma para o broker MQTT (192.168.56.30). O cluster gerencia workloads, o edge node executa aplicações de borda, o broker MQTT faz a ponte de mensagens IoT. Prometheus coleta métricas do edge node.


+----------------+      +----------------+      +----------------+
|  Kubernetes    |<---->|   Edge Node    |<---->|   MQTT Broker  |
| (192.168.56.10)|      |(192.168.56.20) |      |(192.168.56.30) |
+----------------+      +----------------+      +----------------+
         |                        |                      |
         +------------------------+----------------------+
                        (Rede privada)

Equipamentos e software

ItemRequisito, licença ou versão
VM ou máquina física para Kubernetes2 vCPU, 2GB RAM, Ubuntu 22.04 ou similar
VM ou máquina física para Edge Node2 vCPU, 2GB RAM, Ubuntu 22.04 ou similar
VM ou máquina física para MQTT Broker1 vCPU, 1GB RAM, Ubuntu 22.04 ou similar
KubernetesApache 2.0 · a versão estável atual
KubeEdgeApache 2.0 · a versão estável atual
Eclipse MosquittoEPL/EDL · a versão estável atual
PrometheusApache 2.0 · a versão estável atual

Roteiro

  1. Preparar as VMs e a rede

    Garanta que as três máquinas (ou VMs) estejam na mesma rede privada, com IPs fixos e acesso SSH entre elas. Isso evita problemas de conectividade.

    O que você deve ver: Ping entre os IPs funciona. SSH entre as máquinas está disponível.

  2. Instalar Kubernetes (kubeadm) na máquina de nuvem

    KubeEdge depende de um cluster Kubernetes funcional. Use kubeadm para instalar um cluster simples.

    sudo apt update && sudo apt install -y apt-transport-https curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    sudo apt update
    sudo apt install -y kubelet kubeadm kubectl
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    O que você deve ver: Cluster Kubernetes inicializado. 'kubectl get nodes' mostra o nó master como Ready.

  3. Instalar Mosquitto MQTT Broker

    O broker MQTT faz a ponte de mensagens entre dispositivos e aplicações. Instale o Mosquitto na VM dedicada.

    sudo apt update && sudo apt install -y mosquitto mosquitto-clients
    sudo systemctl enable mosquitto
    sudo systemctl start mosquitto

    O que você deve ver: Mosquitto rodando na porta 1883. 'systemctl status mosquitto' mostra ativo.

  4. Instalar KubeEdge CloudCore no cluster Kubernetes

    O CloudCore integra o cluster Kubernetes ao KubeEdge. Instale via binário oficial.

    curl -LO https://github.com/kubeedge/kubeedge/releases/download/v1.14.0/kubeedge-v1.14.0-linux-amd64.tar.gz
    sudo tar -xzf kubeedge-v1.14.0-linux-amd64.tar.gz -C /opt/
    cd /opt/kubeedge-v1.14.0-linux-amd64/cloud/
    sudo ./cloudcore --defaultconfig > /etc/kubeedge/cloudcore.yaml
    sudo ./cloudcore --config /etc/kubeedge/cloudcore.yaml &

    O que você deve ver: CloudCore rodando. Logs mostram inicialização sem erros.

  5. Configurar CloudCore para MQTT externo

    Altere o arquivo de configuração do CloudCore para apontar para o broker MQTT externo.

    sudo nano /etc/kubeedge/cloudcore.yaml
    # Edite mqttServer: "tcp://192.168.56.30:1883" na seção 'modules.cloudHub.mqtt'. Salve e reinicie o CloudCore.

    O que você deve ver: CloudCore conecta ao broker MQTT externo. Logs mostram conexão bem-sucedida.

  6. Instalar KubeEdge EdgeCore no edge node

    EdgeCore é o agente do KubeEdge na borda. Baixe e configure o binário.

    curl -LO https://github.com/kubeedge/kubeedge/releases/download/v1.14.0/kubeedge-v1.14.0-linux-amd64.tar.gz
    sudo tar -xzf kubeedge-v1.14.0-linux-amd64.tar.gz -C /opt/
    cd /opt/kubeedge-v1.14.0-linux-amd64/edge/
    sudo ./edgecore --defaultconfig > /etc/kubeedge/edgecore.yaml
    sudo nano /etc/kubeedge/edgecore.yaml
    # Configure cloudcoreIP: "192.168.56.10" e mqttServerExternal: "tcp://192.168.56.30:1883". Salve e rode:
    sudo ./edgecore --config /etc/kubeedge/edgecore.yaml &

    O que você deve ver: EdgeCore conecta ao CloudCore. Logs mostram handshake bem-sucedido.

  7. Registrar o edge node no cluster Kubernetes

    Para o cluster reconhecer o edge node, gere um token no CloudCore e registre no EdgeCore.

    No CloudCore: sudo keadm gettoken
    No Edge Node: sudo keadm join --cloudcore-ipport=192.168.56.10:10000 --token=<token>

    O que você deve ver: Edge node aparece como Ready em 'kubectl get nodes'.

  8. Deploy de um pod de exemplo no edge node

    Teste a orquestração implantando um pod nginx no edge node via Kubernetes.

    kubectl apply -f - <<EOF
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-edge
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx-edge
      template:
        metadata:
          labels:
            app: nginx-edge
        spec:
          nodeSelector:
            kubeedge.io/edge-node: "true"
          containers:
          - name: nginx
            image: nginx:alpine
            ports:
            - containerPort: 80
    EOF

    O que você deve ver: Pod nginx-edge criado e rodando no edge node. 'kubectl get pods -o wide' mostra o pod no edge node.

  9. Simular um dispositivo IoT publicando no MQTT

    Use o mosquitto_pub para simular um sensor publicando dados no broker MQTT.

    mosquitto_pub -h 192.168.56.30 -t 'iot/sensor1' -m '{"temp": 22.5}'

    O que você deve ver: Mensagem publicada no tópico 'iot/sensor1'.

  10. Consumir a mensagem MQTT no edge node

    No edge node, use mosquitto_sub para verificar se a mensagem chega.

    mosquitto_sub -h 192.168.56.30 -t 'iot/sensor1'

    O que você deve ver: Mensagem '{"temp": 22.5}' recebida no terminal.

  11. Instalar e configurar Prometheus para monitorar o edge node

    Prometheus coleta métricas do edge node. Instale e configure o Prometheus para buscar métricas na porta padrão do EdgeCore.

    sudo useradd --no-create-home --shell /bin/false prometheus
    sudo mkdir /etc/prometheus /var/lib/prometheus
    curl -LO https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
    sudo tar -xzf prometheus-2.45.0.linux-amd64.tar.gz -C /opt/
    sudo cp /opt/prometheus-2.45.0.linux-amd64/prometheus /usr/local/bin/
    sudo nano /etc/prometheus/prometheus.yml
    # Adicione:
    scrape_configs:
      - job_name: 'kubeedge-edgecore'
        static_configs:
          - targets: ['192.168.56.20:10350']
    # Rode o Prometheus:
    sudo prometheus --config.file=/etc/prometheus/prometheus.yml &

    O que você deve ver: Prometheus coleta métricas do edge node. Interface web mostra job 'kubeedge-edgecore' como UP.

Como saber que funcionou

TesteComandoCritério
Verificar edge node no clusterkubectl get nodesEdge node aparece como Ready.
Verificar pod nginx-edge rodandokubectl get pods -o widePod nginx-edge está Running no edge node.
Testar publicação MQTT de sensormosquitto_pub -h 192.168.56.30 -t 'iot/sensor1' -m '{"temp": 22.5}'Mensagem recebida por mosquitto_sub no edge node.
Verificar coleta de métricas PrometheusAcesse http://<prometheus-ip>:9090/targetsJob 'kubeedge-edgecore' aparece como UP.

Troubleshooting

SintomaCausa provávelCorreção
Edge node não aparece no clusterToken inválido ou problema de redeGere novo token com 'keadm gettoken' e verifique conectividade IP.
Pod não agenda no edge nodenodeSelector incorreto ou edge node não ReadyConfirme labels do node e status com 'kubectl get nodes --show-labels'.
Mensagem MQTT não chega ao edge nodeFirewall bloqueando porta 1883 ou erro de configuração MQTTVerifique regras de firewall e configuração do Mosquitto.
Prometheus não coleta métricas do edge nodePorta 10350 bloqueada ou scrape_configs incorretoAjuste firewall e revise o prometheus.yml.

Segurança e hardening

  • Altere as senhas padrão dos sistemas operacionais.
  • Configure autenticação no Mosquitto para evitar acesso anônimo.
  • Limite o acesso SSH apenas aos IPs necessários.
  • Use firewall para restringir portas abertas (1883, 10350, 10000).
  • Consulte a documentação do KubeEdge para práticas de hardening em produção.

Checklist final

Referências

  1. KubeEdge Documentation · Kubeedge (kubeedge.io)
  2. Kubernetes Documentation · Kubernetes (CNCF) (kubernetes.io)
  3. Prometheus Documentation · 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
3 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.