Skip to content

Hướng Dẫn Vận Hành & Kiến Trúc Toàn Trình (How It Works)

Chào mừng bạn đến với tài liệu kiến trúc toàn trình của hệ thống Bun Multi-OS iPXE & Cloud-Init Server.

Tài liệu này giải thích chi tiết bức tranh tổng thể về cách thức một máy tính trắng (Bare-Metal hoặc máy ảo Proxmox VE) chuyển mình thành một máy chủ Kubernetes (K3s) hoàn chỉnh chỉ từ một lệnh bật nguồn (Zero-Touch Provisioning - ZTP).


1. Sơ Đồ Kiến Trúc Hệ Thống (System Architecture)


2. Luồng Vận Hành Toàn Trình (End-to-End Sequence Diagram)

Dưới đây là chu kỳ tương tác thời gian thực từ lúc máy tính được cấp nguồn cho đến khi cụm Kubernetes đi vào hoạt động ổn định:


3. Các Chặng Chuyển Đổi Vòng Đời (Lifecycle Boot Phases)

Hệ thống hoạt động mượt mà nhờ việc phân định ranh giới rõ ràng giữa 7 giai đoạn kế tiếp nhau:

Giai ĐoạnThực Thể Chịu Trách NhiệmNhiệm Vụ Cốt LõiCơ Chế Bàn Giao (Handoff)
Phase 1: Hardware POSTBo mạch chủ / Card mạngKhởi tạo phần cứng, kích hoạt PXE ROM.Phát sóng gói tin DHCPDISCOVER.
Phase 2: Stage 1 iPXETFTP ServerNạp ipxe.efi (vài trăm KB) vào bộ nhớ RAM.Thực thi nhị phân iPXE trong không gian EFI.
Phase 3: Stage 2 HTTPBun HTTP ServerTruy vấn MAC trong data/state.db (SQLite) để trả về iPXE script tương ứng.Lệnh iPXE kernelinitrd nạp Linux.
Phase 4: Live OS BootLinux Casper EnvironmentMount hệ thống tệp gốc qua NFS hoặc nạp ISO vào RAM.Khởi chạy tiến trình subiquity của Canonical.
Phase 5: Subiquity EngineCloud-Init & CurtinĐọc cấu hình từ /os/ubuntu/:mac/user-data, phân vùng ổ đĩa, chạy late-commands.Gửi Webhook Phone-Home /api/installed rồi reboot.
Phase 6: Production RunLocal Drive / K3s / RKE2iPXE nhận diện trạng thái đã cài -> thực thi sanboot 0x80.Máy khởi động vào OS trên SSD và cụm Kubernetes sẵn sàng.
Phase 7: Cluster AccessBun Kubeconfig APICung cấp endpoint GET /api/kubeconfig/:identifier SSH thời gian thực, tự đổi server IP.Trả file YAML/JSON sẵn sàng cho kubectl kết nối từ xa.

4. Mô Hình Cấu Hình Khai Báo (Declarative Infrastructure)

Hệ thống tuân thủ triệt để nguyên lý Infrastructure as Code (IaC). Quản trị viên không cần gõ lệnh thủ công trên từng node, tất cả định nghĩa nằm trong [config/hosts.yaml](file:///Users/timi/lab/lab-ipxe-os/config/hosts.yaml):

  1. Khối cấu hình mặc định (default): Áp dụng cho mọi máy lạ chưa đăng ký địa chỉ MAC (Zero-Touch cắm là chạy).
  2. Khối cấu hình máy chủ (hosts): Ghi đè chi tiết theo từng địa chỉ MAC cụ thể:
    • Hostname, địa chỉ IP tĩnh / Netmask / Gateway / DNS.
    • Hệ điều hành mục tiêu (ubuntu, talos, suse-micro).
    • Profile chuyên biệt (k3s-single-node, generic).
    • Phương thức nạp rootfs (boot_method: nfs cho VM hoặc boot_method: http cho máy thật).
    • Thiết bị lưu trữ mục tiêu (target_disk: /dev/sda hoặc /dev/nvme0n1).

5. Danh Mục Tài Liệu Chuyên Sâu (Master Navigation Hub)

Để tìm hiểu sâu hơn về từng khía cạnh kỹ thuật cụ thể, vui lòng tham khảo các chuyên đề bên dưới:

  • 🌐 Giao Thức Mạng & Thiết Lập Bộ Định Tuyến (network-protocols.md):

    • Phân tích chi tiết chu kỳ DHCP DORA và các DHCP Option 66, 67, 60, 93, 175.
    • Bản chất kỹ thuật của Two-Stage Chainloading.
    • Cấu hình mẫu sẵn sàng copy-paste cho OPNsense/pfSense, MikroTik, dnsmasq, và OpenWrt.
  • ⚙️ Động Cơ Cài Đặt Hệ Điều Hành (os-engines.md):

    • Phân tích Casper, Subiquity Autoinstall và Cloud-Init.
    • So sánh chi tiết kỹ thuật Rootfs: HTTP Range 206 Partial Content vs. NFS Stream Boot.
    • Mổ xẻ Profile k3s-single-node (Ubuntu) và rke2-single-node (openSUSE Leap Micro).
    • Giới thiệu Talos Linux MachineConfig và openSUSE Combustion.
    • Mô hình kiến trúc 2 tầng Registry: Provider Registry & Profile Registry Map.
    • Hướng dẫn từng bước tự thêm Profile và OS Provider mới.
  • 🛡️ Cơ Chế Chống Boot Loop & Máy Trạng Thái (anti-boot-loop.md):

    • Giải quyết nghịch lý vòng lặp cài đặt vô tận trong Zero-Touch Provisioning.
    • Kỹ thuật chuyển giao phần cứng sanboot --drive 0x80 || exit 1.
    • Kiến trúc State Machine data/state.db (SQLite WAL) và giao thức Phone-Home Webhook.
    • Các kịch bản phục hồi ngoại lệ và quy trình ép cài đặt lại (force_install).
  • 🩺 Sổ Tay Chẩn Đoán & Xử Lý Sự Cố (troubleshooting.md):

    • Sơ đồ phân tầng tìm lỗi từ L1/L2 Mạng đến Subiquity và Kubernetes.
    • Xử lý triệt để lỗi OOM Killer crash installer trên VM RAM 4GB–5GB.
    • Cách bật Emergency Shell và xem log thời gian thực trong quá trình cài đặt.
    • Bảng tra cứu nhanh triệu chứng và mã lệnh cứu hộ khẩn cấp.

Multi-OS iPXE & Cloud-Init Autoinstall Hub