Triển khai Proxmox VE trên Server vật lý
Chuẩn bị ISO và Boot Proxmox
Tải bản ISO Proxmox VE 8.2 (hoặc bản mới nhất) từ trang chủ. Gắn ISO vào boot menu của server vật lý hoặc sử dụng tool như `dd` để ghi vào USB boot.
Khởi động server, chọn "Install Proxmox VE" trong menu boot. Đảm bảo kết nối mạng đã được thiết lập để server có thể pull repository.
Kết quả mong đợi: Giao diện cài đặt Proxmox hiện ra trên màn hình, cho phép chọn ngôn ngữ và bàn phím.
Cấu hình Partition và Disk
Trong bước "Disk Selection", chọn disk vật lý (thường là /dev/sda hoặc /dev/nvme0n1). Chọn định dạng "LVM (LVM Thin)" để tối ưu hóa việc tạo VM và Container sau này.
Kiểm tra lại các phân vùng: Root (bổ sung swap), Rootfs, Data. Đảm bảo disk đã được wipe sạch trước khi ghi.
Kết quả mong đợi: Quá trình phân vùng hoàn tất, Proxmox bắt đầu cài đặt các gói hệ thống cơ bản.
Cấu hình Network và Hostname
Trong bước "Network Configuration", nhập Hostname là `pve-edge-01` (hoặc tên phù hợp với hạ tầng của bạn). Nhập Domain là `localdomain` hoặc domain nội bộ.
Cấu hình IP Address cố định (Static IP) cho interface chính (thường là eno1 hoặc eth0). Ví dụ: 192.168.10.5/24, Gateway: 192.168.10.1.
Kết quả mong đợi: Hệ thống lưu cấu hình mạng, bạn có thể truy cập web UI qua địa chỉ IP vừa đặt.
Hoàn tất cài đặt và đăng nhập
Thiết lập mật khẩu cho user `root@pam`. Lưu ý mật khẩu này dùng để đăng nhập cả CLI (SSH) và Web UI.
Nhấn "Finish" để hoàn tất. Server sẽ tự động restart. Sau khi khởi động lại, truy cập `https://:8006` trên trình duyệt.
Kết quả mong đợi: Giao diện Web UI Proxmox hiện ra, yêu cầu đăng nhập bằng `root@pam` và mật khẩu đã đặt.
Cấu hình Bridge Network và VLAN trong Proxmox
Chuẩn bị Switch và Port VLAN
Trên switch vật lý, cấu hình các port kết nối với server Proxmox thành Trunk port, cho phép truyền VLAN Tagged.
Đảm bảo các VLAN ID (ví dụ: VLAN 10 cho Management, VLAN 20 cho Data, VLAN 30 cho Storage) đã được tạo trên Switch.
Kết quả mong đợi: Switch sẵn sàng nhận và gửi các frame mạng có tag VLAN tương ứng.
Cấu hình Bridge trong Proxmox CLI
Truy cập SSH vào Proxmox bằng user root. Chỉnh sửa file cấu hình mạng chính.
Sửa file /etc/network/interfaces để định nghĩa các Bridge và VLAN Interface.
auto lo
iface lo inet loopback
# Physical Interface (Uplink) - Không assign IP trực tiếp
auto eno1
iface eno1 inet manual
# Bridge Management (VLAN 10 - Tagged)
auto vmbr0
iface vmbr0 inet static
address 192.168.10.5/24
gateway 192.168.10.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
# Bridge Data (VLAN 20 - Tagged)
auto vmbr1
iface vmbr1 inet manual
bridge-ports eno1
bridge-stp off
bridge-fd 0
# VLAN Interface cho Management
auto vmbr0.10
iface vmbr0.10 inet manual
vlan 10
bridge-ports vmbr0
bridge-stp off
bridge-fd 0
# VLAN Interface cho Data (VLAN 20)
auto vmbr1.20
iface vmbr1.20 inet manual
vlan 20
bridge-ports vmbr1
bridge-stp off
bridge-fd 0
Kết quả mong đợi: File cấu hình đã lưu, định nghĩa rõ các Bridge và VLAN interface để gán cho VM/Container sau này.
Áp dụng và Verify cấu hình mạng
Chạy lệnh để reload cấu hình mạng mà không cần restart server.
systemctl restart networking
Sau đó kiểm tra trạng thái các interface bằng lệnh `ip addr`.
ip addr show vmbr0 vmbr1 vmbr0.10 vmbr1.20
Kết quả mong đợi: Các interface `vmbr0`, `vmbr1` và các VLAN sub-interface (`vmbr0.10`, `vmbr1.20`) hiện trạng thái UP.
Tạo Container LXC cho Kubernetes Control Plane
Chuẩn bị OS Template
Tải template Ubuntu 22.04 LTS (Jammy) từ repository của Proxmox để tạo LXC container tối ưu cho K3s.
Chạy lệnh download template vào thư mục templates của Proxmox.
pveam update
pveam download local/ubuntu-22.04-standard_22.04-1_amd64.tar.gz
Kết quả mong đợi: File template `.tar.gz` xuất hiện trong Datacenter -> Local -> Templates trên Web UI hoặc CLI.
Tạo LXC Container qua CLI
Sử dụng lệnh `ct create` để tạo container với các thông số tối ưu cho Kubernetes: Unprivileged (an toàn hơn), RootFS đủ lớn, và cấu hình Network đúng VLAN.
Tạo container ID 100 cho Control Plane, gán vào VLAN Management (vmbr0.10).
pct create 100 local/ubuntu-22.04-standard_22.04-1_amd64.tar.gz \
--password-raw 'K8sRoot@2024' \
--net0 name=vmbr0.10,bridge=vmbr0.10,ip=192.168.10.100/24,firewall=1 \
--net1 name=vmbr1.20,bridge=vmbr1.20,ip=10.20.0.100/24 \
--cores 4 \
--memory 8192 \
--rootfs local-lvm:80 \
--features nesting=1,nested=1 \
--unprivileged 0 \
--console 1
Giải thích thông số: `--features nesting=1` cho phép chạy container trong container (cần thiết cho Docker/K8s). `--unprivileged 0` tạo container với quyền root đầy đủ (yêu cầu cho K3s control plane mặc dù không khuyến khích cho production nhưng cần cho setup ban đầu).
Kết quả mong đợi: Container ID 100 được tạo thành công, trạng thái là "stopped".
Khởi động và cấu hình SSH
Khởi động container LXC.
pct start 100
Đợi 30 giây để container khởi động xong. Sau đó truy cập SSH vào container để cài đặt các gói cần thiết.
pct exec 100 -- bash
Kết quả mong đợi: Bạn đã vào được shell bên trong container. Kiểm tra IP bằng `ip addr` để đảm bảo 2 IP (Management và Data) đều nhận được.
Cấu hình Firewall và SSH Access cho Quản trị viên
Bật Firewall Proxmox VE
Truy cập Web UI, vào Datacenter -> Options -> Firewall. Bật "Firewall" lên. Cấu hình Policy mặc định là "Drop" hoặc "Accept" tùy mức độ bảo mật, nhưng khuyến nghị "Drop" và whitelist các IP cần thiết.
Trong CLI, chỉnh sửa file /etc/pve/firewall/100.conf (nếu tạo qua CLI) hoặc dùng Web UI để cấu hình.
pvesm status
pve-firewall start
Kết quả mong đợi: Dịch vụ firewall Proxmox chạy, chặn các kết nối không rõ nguồn.
Cấu hình SSH Key cho Quản trị viên
Để truy cập container K8s Control Plane mà không cần gõ password, cấu hình SSH Key từ máy quản trị vào container.
Tạo key pair trên máy quản trị (nếu chưa có) và copy public key vào container.
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.100
Kết quả mong đợi: Có thể SSH vào container 100 mà không cần password.
Cấu hình Firewall Rules cho Container
Trong Web UI, vào Node -> 100 -> Options -> Firewall. Bật "Firewall" cho container này.
Thêm Rule cho phép SSH (Port 22) từ IP quản trị viên cụ thể (ví dụ: 192.168.10.50).
Thêm Rule cho phép các port K8s (6443, 10250, 10255, 2379-2380) từ các node khác trong cluster (VLAN Data 10.20.0.0/24).
Trong CLI, chỉnh sửa file /etc/pve/firewall/100.conf thủ công để đảm bảo chính xác.
cat > /etc/pve/firewall/100.conf
Kết quả mong đợi: File cấu hình firewall được ghi, các rule đã áp dụng, chỉ cho phép traffic từ IP quản trị và subnet K8s.
Verify kết quả cuối cùng
Kiểm tra lại toàn bộ hạ tầng bằng các lệnh sau:
# Kiểm tra trạng thái container
pct status 100
# Kiểm tra kết nối mạng từ bên ngoài vào container
ping -c 3 192.168.10.100
ping -c 3 10.20.0.100
# Kiểm tra SSH access
ssh root@192.168.10.100 "hostname && whoami"
# Kiểm tra firewall rules
pve-firewall status
Kết quả mong đợi: Container 100 đang chạy (status: running), ping thông cả 2 mạng, SSH kết nối thành công, và firewall hiển thị các rule đã định nghĩa.
Đ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 1: Chuẩn bị phần cứng, phần mềm và kiến trúc hệ thống
Phần 3: Cài đặt và cấu hình NVIDIA Jetson cho Edge AI »