1. Cài đặt KubeEdge Cloud Core và Edge Core từ Source
1.1. Chuẩn bị môi trường build và cài đặt Cloud Core
Thực hiện trên máy chủ Cloud (Cloud Node). Mục đích là biên dịch Cloud Core từ mã nguồn để có quyền kiểm soát toàn bộ phiên bản và các tùy chỉnh bảo mật trước khi tích hợp với Edge.
Yêu cầu: Đã cài đặt Go (phiên bản >= 1.20), Git và Make. Đảm bảo đường dẫn $GOPATH đã được cấu hình.
Clone repository chính thức của KubeEdge và chuyển đến thư mục cần build.
cd $GOPATH/src
git clone https://github.com/kubeedge/kubeedge.git
cd kubeedge
git checkout v1.14.0
Kết quả mong đợi: Thư mục kubeedge được tạo ra, mã nguồn được tải về và chuyển đổi sang nhánh v1.14.0.
Biên dịch và cài đặt thành phần Cloud Core vào hệ thống.
make cloud-core
Kết quả mong đợi: File binary cloudcore được tạo trong thư mục output/bin/.
Copy binary vào thư mục hệ thống để chạy như một service.
sudo cp output/bin/cloudcore /usr/local/bin/
sudo chmod +x /usr/local/bin/cloudcore
Kết quả mong đợi: Lệnh cloudcore có thể gọi được từ mọi thư mục với quyền root.
1.2. Cài đặt Edge Core trên Node Edge
Thực hiện trên máy tính/nút biên (Edge Node). Mục đích là biên dịch Edge Core để xử lý logic điều khiển tại biên, giảm độ trễ so với việc chỉ dùng agent nhẹ.
Yêu cầu: Go (>= 1.20), Git, Make. Kiến trúc CPU của Edge Node (thường là x86_64 hoặc arm64).
Clone repository và checkout cùng phiên bản với Cloud Core để đảm bảo tính tương thích giao thức.
cd $GOPATH/src
git clone https://github.com/kubeedge/kubeedge.git
cd kubeedge
git checkout v1.14.0
Kết quả mong đợi: Mã nguồn Edge được tải về và đồng bộ phiên bản với Cloud Core.
Biên dịch Edge Core.
make edge-core
Kết quả mong đợi: File binary edgecore được tạo trong output/bin/.
Cài đặt binary vào hệ thống Edge.
sudo cp output/bin/edgecore /usr/local/bin/
sudo chmod +x /usr/local/bin/edgecore
Kết quả mong đợi: Lệnh edgecore có thể chạy trên Edge Node.
2. Cấu hình file config.yaml cho kết nối Cloud-Edge
2.1. Cấu hình Cloud Core (Cloud Node)
Trên Cloud Node, file cấu hình này định nghĩa cách Cloud Core giao tiếp với Kubernetes API Server và quản lý các Edge Node. Chúng ta sẽ cấu hình để sử dụng mô hình Edge Core (thay vì Edge Agent đơn thuần) và bật chế độ Edge.
Đường dẫn: /etc/kubeedge/cloudcore.yaml
Tạo thư mục cấu hình và viết file cloudcore.yaml với nội dung hoàn chỉnh dưới đây. Lưu ý: Thay thế bằng IP thực tế của Cloud Node.
mkdir -p /etc/kubeedge
cat > /etc/kubeedge/cloudcore.yaml
Kết quả mong đợi: File /etc/kubeedge/cloudcore.yaml được tạo với cấu hình lắng nghe cổng 10000 trên tất cả giao diện mạng.
2.2. Cấu hình Edge Core (Edge Node)
Trên Edge Node, file này chỉ định cách Edge Core kết nối về Cloud Core. Chúng ta sẽ sử dụng giao thức MQTT hoặc KubeEdge API (thông qua Websocket) tùy theo môi trường. Ở đây cấu hình mặc định sử dụng chế độ Edge Core kết nối qua cổng 10000.
Đường dẫn: /etc/kubeedge/edgecore.yaml
Tạo thư mục và file cấu hình. Thay thế bằng IP của Cloud Node.
mkdir -p /etc/kubeedge
cat > /etc/kubeedge/edgecore.yaml
Kết quả mong đợi: File /etc/kubeedge/edgecore.yaml được tạo, Edge Core biết địa chỉ Cloud Core để handshake.
3. Triển khai K8s Cluster mẫu và đăng ký Node Edge
3.1. Khởi động Cloud Core
Trên Cloud Node, khởi động Cloud Core bằng systemd để nó chạy như một service hệ thống, đảm bảo tự động khởi động khi máy lên.
Tạo file unit file systemd cho Cloud Core.
cat > /etc/systemd/system/cloudcore.service
Kết quả mong đợi: File unit cloudcore.service được tạo.
Reload systemd, enable và start service.
sudo systemctl daemon-reload
sudo systemctl enable cloudcore
sudo systemctl start cloudcore
Kết quả mong đợi: Service chạy không lỗi. Kiểm tra bằng systemctl status cloudcore thấy trạng thái active (running).
3.2. Khởi động Edge Core và Đăng ký Node
Trên Edge Node, thực hiện tương tự để khởi động Edge Core. Đây là bước đăng ký node vào K8s cluster thông qua KubeEdge.
Tạo file unit file systemd cho Edge Core.
cat > /etc/systemd/system/edgecore.service
Kết quả mong đợi: File unit edgecore.service được tạo.
Reload systemd, enable và start service.
sudo systemctl daemon-reload
sudo systemctl enable edgecore
sudo systemctl start edgecore
Kết quả mong đợi: Service Edge Core chạy. Log sẽ hiển thị quá trình kết nối (handshake) với Cloud Core.
4. Kiểm tra trạng thái kết nối và thông dịch lệnh
4.1. Xác minh trạng thái Node trên K8s
Trên Cloud Node (nơi chạy Kubernetes Master), sử dụng kubectl để kiểm tra xem Edge Node đã được nhận diện và chuyển sang trạng thái Ready hay chưa.
Lệnh kiểm tra danh sách node.
kubectl get nodes
Kết quả mong đợi: Bảng hiển thị node Edge (tên hostname của Edge Node) với trạng thái Ready hoặc SchedulingDisabled (nếu chưa được đánh nhãn). Trạng thái Ready có nghĩa là kết nối Cloud-Edge đã thành công.
Kiểm tra chi tiết thông tin node Edge.
kubectl describe node
Kết quả mong đợi: Thấy các điều kiện (Conditions) như KubeletReady là True. Các thông tin về điều khiển (Conditions) của KubeEdge như EdgeNodeReady cũng hiện diện.
4.2. Kiểm tra luồng lệnh từ Cloud xuống Edge
Thử nghiệm bằng cách tạo một Pod đơn giản trên Edge Node để xác nhận lệnh từ Cloud Core được Edge Core thông dịch và thực thi đúng.
Tạo Pod với nhãn (label) để đặt lên Edge Node (tùy chọn, hoặc để K8s tự chọn nếu chỉ có 1 node).
kubectl run nginx-test --image=nginx:alpine --node=
Kết quả mong đợi: Pod được tạo với trạng thái Pending rồi chuyển sang Running.
Kiểm tra trạng thái Pod.
kubectl get pods -o wide
Kết quả mong đợi: Pod nginx-test hiển thị IP và NODE là .
Kiểm tra log của Edge Core trên Edge Node để xác nhận lệnh đã được nhận và xử lý.
sudo journalctl -u edgecore -f | grep -i "nginx-test"
Kết quả mong đợi: Thấy các log về việc nhận sự kiện từ Cloud, phân tích YAML, và gọi CRI (Container Runtime Interface) để tạo container.
4.3. Xác minh kết nối MQTT (Optional)
Nếu muốn kiểm tra trực tiếp kết nối MQTT giữa Cloud và Edge (thay vì qua K8s API), có thể kiểm tra log của Cloud Core.
Trên Cloud Node, xem log kết nối.
sudo journalctl -u cloudcore -f | grep -i "edge"
Kết quả mong đợi: Thấy log edgecore connected hoặc edge node registered khi Edge Core khởi động lần đầu.
Điều hướng series:
Mục lục: Series: Xây dựng hệ thống Service Mesh an toàn cho Edge AI với KubeEdge và eBPF
« Phần 1: Chuẩn bị môi trường phần cứng và phần mềm cho Edge AI
Phần 3: Xây dựng cơ sở hạ tầng Service Mesh với Istio cho môi trường Edge »