← Quay lại Blog
navigationdevopskubernetesfleet

Kubernetes cho Robot Fleet: Orchestration ở quy mô lớn

Kubernetes cho Robot Fleet — sử dụng K3s và GitOps để quản lý, cập nhật và giám sát hàng trăm robot edge device.

Nguyễn Anh Tuấn1 tháng 11, 20255 phút đọc
Kubernetes cho Robot Fleet: Orchestration ở quy mô lớn

Bài toán quản lý robot fleet

Khi fleet tăng từ 5 lên 50 rồi 500 robot, việc SSH vào từng máy để cập nhật phần mềm trở nên bất khả thi. Bạn cần một hệ thống tự động hóa việc deploy, rollback, monitoring và scaling — đó chính xác là những gì Kubernetes làm.

Nhưng Kubernetes tiêu chuẩn quá nặng cho edge device. Giải pháp: K3s — bản Kubernetes rút gọn chỉ chiếm 512MB RAM, chạy được trên Raspberry Pi và NVIDIA Jetson.

Kiến trúc K3s cho Robot Fleet

┌─────────────────────────────────────────┐
│           Cloud (Control Plane)          │
│  ┌───────────┐  ┌──────────┐           │
│  │ K3s Server│  │ GitOps   │           │
│  │ (master)  │  │ (FluxCD) │           │
│  └───────────┘  └──────────┘           │
└──────────┬──────────────────────────────┘
           │ WireGuard VPN
     ┌─────┼──────┬──────────┐
     ▼     ▼      ▼          ▼
┌────────┐┌────────┐┌────────┐┌────────┐
│Robot 1 ││Robot 2 ││Robot 3 ││Robot N │
│K3s     ││K3s     ││K3s     ││K3s     │
│Agent   ││Agent   ││Agent   ││Agent   │
└────────┘└────────┘└────────┘└────────┘

Server room và hạ tầng cloud orchestration

Cài đặt K3s

Server (Cloud/On-premise)

# Cài K3s server
curl -sfL https://get.k3s.io | sh -s - server \
  --tls-san your-server-ip \
  --write-kubeconfig-mode 644

# Lấy token để join agent
cat /var/lib/rancher/k3s/server/node-token

Agent (Trên mỗi robot)

# Cài K3s agent trên robot
curl -sfL https://get.k3s.io | K3S_URL=https://server-ip:6443 \
  K3S_TOKEN="node-token-here" sh -s - agent

# Label robot theo loại và vị trí
kubectl label node robot-001 robot-type=amr location=warehouse-a

Deploy ứng dụng robot

Deployment manifest

# robot-controller.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: robot-controller
  namespace: fleet
spec:
  selector:
    matchLabels:
      app: robot-controller
  template:
    metadata:
      labels:
        app: robot-controller
    spec:
      nodeSelector:
        robot-type: amr
      containers:
        - name: controller
          image: registry.vnrobo.com/robot-controller:v2.1
          resources:
            limits:
              memory: "512Mi"
              cpu: "1"
          volumeMounts:
            - name: device-serial
              mountPath: /dev/ttyUSB0
          securityContext:
            privileged: true  # Cần cho hardware access
      volumes:
        - name: device-serial
          hostPath:
            path: /dev/ttyUSB0

Rolling Update — cập nhật không downtime

# Cập nhật image
kubectl set image daemonset/robot-controller \
  controller=registry.vnrobo.com/robot-controller:v2.2 \
  -n fleet

# Theo dõi rollout
kubectl rollout status daemonset/robot-controller -n fleet

# Rollback nếu có lỗi
kubectl rollout undo daemonset/robot-controller -n fleet

GitOps với FluxCD

GitOps biến Git repo thành single source of truth — mọi thay đổi cấu hình đều qua Git commit:

# Cài FluxCD
flux install

# Kết nối với Git repo
flux create source git robot-fleet \
  --url=ssh://[email protected]/vnrobo/fleet-config \
  --branch=main

# Auto-deploy khi có thay đổi
flux create kustomization robot-apps \
  --source=robot-fleet \
  --path="./apps" \
  --prune=true \
  --interval=5m

Workflow triển khai:

Developer commit → GitHub → FluxCD detect → K3s apply → Robot updated

Không cần SSH, không cần script, không cần nhớ robot nào đã update. FluxCD đảm bảo mọi robot luôn khớp với Git. Nếu bạn đang ở bước đầu với Docker, xem bài triển khai ứng dụng IoT với Docker trước khi chuyển sang Kubernetes.

Hệ thống giám sát và quản lý thiết bị từ xa

Monitoring fleet

Prometheus + Grafana trên K3s

# Cài monitoring stack
helm repo add prometheus-community \
  https://prometheus-community.github.io/helm-charts

helm install monitoring prometheus-community/kube-prometheus-stack \
  --namespace monitoring --create-namespace \
  --set prometheus.prometheusSpec.retention=7d \
  --set grafana.adminPassword=${GRAFANA_PASS}

Custom metrics từ robot

from prometheus_client import Gauge, start_http_server

battery_level = Gauge('robot_battery_percent', 'Battery level', ['robot_id'])
mission_count = Gauge('robot_missions_completed', 'Missions done', ['robot_id'])

start_http_server(9090)

# Trong main loop
battery_level.labels(robot_id="amr-001").set(85.5)
mission_count.labels(robot_id="amr-001").inc()

Xử lý mạng không ổn định

Robot thường kết nối qua WiFi — mạng có thể mất bất cứ lúc nào:

tolerations:
  - key: "node.kubernetes.io/unreachable"
    operator: "Exists"
    effect: "NoExecute"
    tolerationSeconds: 300  # Chờ 5 phút trước khi reschedule

So sánh giải pháp fleet management

Tiêu chí K3s + GitOps Ansible Balena
Auto-healing Không
Rolling update Thủ công
Offline support Tốt Không Tốt
Learning curve Cao Trung bình Thấp
Linh hoạt Rất cao Cao Trung bình
Chi phí Miễn phí Miễn phí Có phí

Lời khuyên

  1. Bắt đầu nhỏ: 3-5 robot trước, quen workflow rồi mới scale
  2. WireGuard VPN giữa server và robot — bảo mật và ổn định hơn expose K3s API
  3. Image registry riêng — tránh phụ thuộc Docker Hub, đặc biệt tại Việt Nam (tốc độ pull chậm)
  4. Test rollback trước — mỗi khi deploy version mới, luôn test rollback procedure

Kubernetes không phải overkill cho robot fleet — đó là cách duy nhất để quản lý đội robot chuyên nghiệp ở quy mô lớn. Kết hợp với MQTT cho telemetry, bạn có hạ tầng hoàn chỉnh cho robot fleet production.

Bài viết liên quan

Bài viết liên quan

Multi-robot Coordination: Thuật toán phân công task
fleetamrprogramming

Multi-robot Coordination: Thuật toán phân công task

Các thuật toán phân công nhiệm vụ cho đội robot — từ Hungarian algorithm, auction-based đến RL-based task allocation.

20/3/202612 phút đọc
Docker + K3s trên edge: GitOps cho robot fleet
devopsfleetkubernetes

Docker + K3s trên edge: GitOps cho robot fleet

Hướng dẫn triển khai Docker và K3s trên edge device — quản lý, cập nhật OTA và giám sát hàng trăm robot với GitOps workflow.

10/3/20268 phút đọc
Wheeled Humanoid: Tương lai robot logistics và warehouse
humanoidfleetamr

Wheeled Humanoid: Tương lai robot logistics và warehouse

Robot hình người trên bánh xe — tại sao thiết kế hybrid này đang thay đổi ngành logistics và vận hành kho hàng.

3/3/202611 phút đọc