Triển khai K3s trên Node Master
Tải và cài đặt K3s với chế độ tự động khởi động
Thực thi script cài đặt chính thức của K3s để đưa node master vào trạng thái hoạt động. Script này sẽ tự động tải binary, tạo systemd service và cấu hình khởi động cùng hệ điều hành.
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable traefik --disable servicelb" sh -
Flag --disable traefik tắt reverse proxy mặc định để giảm tài nguyên, --disable servicelb tắt load balancer nội bộ vì chúng ta sẽ dùng KubeEdge và WireGuard. Sau khi chạy xong, bạn sẽ thấy log cuối cùng báo "k3s: running".
Kiểm tra trạng thái cụm và node
Sử dụng kubectl để xác minh rằng master node đã sẵn sàng và các pod hệ thống (system pods) đang chạy ổn định.
kubectl get nodes
Kết quả mong đợi là cột STATUS hiện Ready và node có label node-role.kubernetes.io/master.
Cài đặt và cấu hình CNI (Container Network Interface)
K3s mặc định sử dụng Flannel nhưng để tối ưu cho Edge Computing, chúng ta sẽ cấu hình lại để sử dụng Flannel với chế độ VXLAN hoặc WireGuard (tùy chọn), hoặc giữ Flannel đơn giản để đảm bảo kết nối mạng cơ bản giữa các pod. Ở bước này, ta kích hoạt Flannel qua Helm chart mặc định của K3s.
kubectl apply -f "https://raw.githubusercontent.com/k3s-io/k3s/master/pkg/data/flannel/cni.yaml"
Lệnh này áp dụng cấu hình CNI vào cluster. Nếu Flannel đã được cài sẵn (mặc định), lệnh này sẽ update cấu hình. Bạn cần đợi 1-2 phút để các pod trong namespace kube-system chuyển sang trạng thái Running.
Cấu hình token secret để kết nối Node Worker
Để các node worker (Edge) có thể join vào cụm này, chúng ta cần trích xuất token secret đã được K3s tạo sẵn trong file cấu hình.
cat /var/lib/rancher/k3s/server/token
Kết quả là một chuỗi ký tự dài (secret token). Lưu chuỗi này lại, bạn sẽ cần nó ở Phần 3 để cấu hình KubeEdge và các node worker. Không được share token này ra công cộng.
Tạo user và cấp quyền RBAC cho người quản trị
Tạo một user Kubernetes riêng biệt để quản trị cụm mà không dùng trực tiếp user root của hệ điều hành, giúp tăng bảo mật khi tích hợp với các công cụ giám sát.
Đầu tiên, tạo file YAML định nghĩa user và rolebinding với tên admin-edge.yaml tại đường dẫn /etc/k3s/admin-edge.yaml.
cat > /etc/k3s/admin-edge.yaml
File này tạo một ServiceAccount mới, cấp quyền cluster-admin (quản trị toàn cụm) và tạo token cho nó.
Áp dụng file cấu hình vừa tạo vào cluster:
kubectl apply -f /etc/k3s/admin-edge.yaml
Kết quả: secret/admin-edge-token created, serviceaccount/admin-edge created, clusterrolebinding.rbac.authorization.k8s.io/admin-edge-binding created.
Verify kết quả cuối cùng
Kiểm tra lại toàn bộ hệ thống sau khi cấu hình xong để đảm bảo mọi thứ hoạt động trước khi sang Phần 3.
kubectl get all --all-namespaces | grep -v "Completed"
Kiểm tra xem các pod trong namespace kube-system (như coredns, local-path-storage, metrics-server) đều ở trạng thái Running.
kubectl auth can-i create pods --as=admin-edge
Kết quả mong đợi là yes, xác nhận user admin-edge đã có quyền tạo pod.
systemctl status k3s
Kết quả hiển thị active (running) và enabled (sẽ tự động khởi động khi restart server).
Điều hướng series:
Mục lục: Series: Xây dựng nền tảng Edge Computing an toàn với K3s, KubeEdge và WireGuard cho IoT
« Phần 1: Chuẩn bị môi trường phần cứng và phần mềm cho dự án
Phần 3: Cài đặt và cấu hình KubeEdge trên Node Master và Edge »