Yêu cầu phần cứng tối thiểu và chuẩn bị vật lý
Thiết bị Host Proxmox (Hypervisor)
Bạn cần một máy chủ vật lý (Bare-metal) để chạy Proxmox VE. Đây là nơi chứa các VM và Container quản lý toàn bộ cluster.
Cấu hình tối thiểu để hệ thống ổn định khi chạy K3s và GPU passthrough:
- CPU: Tối thiểu 8 nhân (vCore), hỗ trợ VT-x/AMD-V và SR-IOV (bắt buộc nếu dùng GPU passthrough cho Jetson). Khuyến nghị: Intel Xeon hoặc AMD EPYC.
- RAM: Tối thiểu 32GB DDR4. Proxmox và K3s đều ăn RAM, cộng thêm overhead cho các VM.
- Storage: 2 ổ SSD NVMe (làm Mirror/ZFS) cho OS và Container, 1 HDD/SSD lớn cho lưu trữ dữ liệu AI model.
- Network: Tối thiểu 2 card mạng (NIC): 1 cho Management (Proxmox GUI), 1 cho Data/VM traffic.
Thiết bị Edge: NVIDIA Jetson
Thiết bị biên cần chạy JetPack SDK và có khả năng tham gia K3s cluster. Chúng ta sẽ giả định sử dụng Jetson AGX Orin hoặc Jetson Xavier NX cho bài series này.
Cấu hình tối thiểu cho Jetson Node:
- Model: NVIDIA Jetson AGX Orin (32GB RAM) hoặc Jetson Xavier NX (16GB RAM).
- Power: Nguồn DC 12V/19V ổn định theo chuẩn của từng dòng board.
- Storage: MicroSD card (dùng tạm cho boot) hoặc M.2 NVMe SSD gắn trực tiếp (khuyến nghị để giảm latency khi load model AI).
- Network: Cổng Ethernet Gigabit (RJ45) hoặc USB-to-Ethernet adapter.
Verify kết quả: Kiểm tra danh sách linh kiện thực tế của bạn, đảm bảo CPU hỗ trợ virtualization (check với lệnh lscpu | grep Virtualization trên host vật lý trước khi cài) và nguồn điện đủ công suất cho Jetson.
Tải tài nguyên phần mềm (ISO và SDK)
Tải Proxmox VE ISO
Bạn cần file ISO của Proxmox VE bản mới nhất (LTS hoặc Stable) để cài đặt Hypervisor.
Tải file ISO từ nguồn chính thức của Proxmox. Sau khi tải về, hãy kiểm tra checksum để đảm bảo file không bị lỗi.
wget https://download.proxmox.com/images/proxmox-ve_7.4-1.iso
sha256sum proxmox-ve_7.4-1.iso
Kết quả mong đợi: File ISO được tải về và hiển thị mã checksum. Bạn cần so sánh mã này với file .sha256sum tải cùng trên trang web Proxmox. Nếu khớp, tiến hành ghi (burn) file này vào USB Bootable bằng công cụ như Rufus hoặc Etcher.
Tải NVIDIA Jetson SDK Manager
SDK Manager là công cụ để flash JetPack (hệ điều hành tối ưu cho Jetson) lên board vật lý.
Tải SDK Manager từ trang NVIDIA Developer. Lưu ý: Bạn cần đăng nhập tài khoản NVIDIA Developer để tải.
cd ~/Downloads
wget https://developer.nvidia.com/embedded/dlc/sdk-manager/2024.1/sdk-manager-2024.1.run
chmod +x sdk-manager-2024.1.run
Kết quả mong đợi: File installer sdk-manager-2024.1.run xuất hiện trong thư mục Downloads và có quyền thực thi. Bạn sẽ dùng file này trên máy Linux Host để flash Jetson sau này.
Lập kế hoạch kiến trúc hệ thống
Mô hình kiến trúc tổng thể
Chúng ta sẽ xây dựng mô hình Hybrid Edge Cloud với 3 thành phần chính:
- Proxmox Host (Cloud/Control Plane): Chạy các VM quản lý (K3s Server, Prometheus, Grafana, Device Manager). Đây là "não bộ" của hệ thống.
- K3s Cluster: Kubernetes phiên bản nhẹ (K3s) chạy trên Proxmox và Jetson. Proxmox đóng vai trò là Master Node, Jetson đóng vai trò là Worker Node.
- NVIDIA Jetson Nodes (Edge Workers): Các thiết bị biên tham gia cluster, nhận lệnh từ K3s để chạy các container AI (YOLO, ResNet, v.v.) và gửi kết quả về Master.
Phân bổ tài nguyên (Resource Allocation)
Trên Proxmox, bạn sẽ tạo các VM như sau:
- VM-K3s-Master: 4 vCPU, 8GB RAM, 60GB Disk. Chạy K3s Server.
- VM-Monitoring: 2 vCPU, 4GB RAM, 40GB Disk. Chạy Prometheus/Grafana/Loki.
- Jetson Physical Node: Không tạo VM, Jetson là thiết bị vật lý độc lập, kết nối qua mạng và tham gia cluster như một Node thực.
Verify kết quả: Vẽ sơ đồ mạng trên giấy hoặc công cụ như Draw.io, xác định rõ IP Address cho từng thành phần. Đảm bảo bạn đã ghi nhớ vai trò của từng thiết bị trước khi cấu hình mạng.
Chuẩn bị môi trường mạng (Network Planning)
Kịch bản mạng (Network Topology)
Để đảm bảo an toàn và hiệu năng, ta chia mạng vật lý thành 2 phân đoạn logic:
- Management Network (VLAN 10): Dùng để truy cập Proxmox GUI, SSH vào VM, và quản lý Jetson. IP tĩnh.
- Edge Data Network (VLAN 20): Dùng cho lưu lượng dữ liệu AI, truyền video stream từ Jetson về K3s, và giao tiếp giữa các Pod.
Cấu hình IP tĩnh cho Proxmox Host
Sau khi cài Proxmox, bạn cần cấu hình IP tĩnh để server không bị thay đổi địa chỉ khi reboot. Chỉnh sửa file cấu hình mạng của Proxmox.
Giả sử bạn có 2 card mạng: enp1s0 (Management) và enp2s0 (Data).
nano /etc/network/interfaces
Sửa nội dung file theo mẫu dưới đây (thay đổi IP và Gateway cho phù hợp với mạng thật của bạn):
auto lo
iface lo inet loopback
# Management Interface (VLAN 10 - Quản lý)
auto enp1s0
iface enp1s0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
dns-nameservers 8.8.8.8 1.1.1.1
# Data Interface (VLAN 20 - Dữ liệu AI)
auto enp2s0
iface enp2s0 inet static
address 10.10.10.100/24
Kết quả mong đợi: Sau khi lưu file (Ctrl+O, Enter, Ctrl+X), chạy lệnh systemctl restart networking hoặc ifup enp1s0 và ifup enp2s0. Kiểm tra bằng ip addr show để đảm bảo cả 2 IP đã được gán đúng.
Cấu hình mạng cho Jetson Node
Trên Jetson (sau khi boot từ SD Card), bạn cần cấu hình IP tĩnh tương ứng với phân đoạn Data Network để nó có thể "nói chuyện" được với K3s Server.
Chạy lệnh SSH vào Jetson và chỉnh sửa file cấu hình Network Manager (nếu dùng NetworkManager) hoặc file /etc/network/interfaces.
ssh user@jetson-ip
sudo nano /etc/network/interfaces
Thay thế nội dung file trên Jetson như sau:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.10.10.150/24
gateway 10.10.10.100
dns-nameservers 8.8.8.8
Lưu ý: Gateway của Jetson phải trỏ về IP của interface Data trên Proxmox (10.10.10.100) để Jetson có thể định tuyến traffic về K3s Server.
Áp dụng thay đổi:
sudo systemctl restart networking
Verify kết quả: Từ Proxmox Host, ping thử IP của Jetson:
ping -c 4 10.10.10.150
Kết quả mong đợi: Thu được phản hồi 64 bytes from 10.10.10.150: icmp_seq=1 ttl=64 time=0.X ms. Nếu ping thông, kiến trúc mạng cơ bản đã sẵn sàng cho việc cài đặt Proxmox và K3s trong các phần tiếp theo.
Điều hướng series:
Mục lục: Series: Series: Xây dựng nền tảng Edge AI với NVIDIA Jetson, Kubernetes K3s và hệ thống quản lý thiết bị biên trên hạ tầng Proxmox
Phần 2: Triển khai hạ tầng Proxmox và cấu hình mạng vật lý »