Triển khai Kubernetes trên vSphere với VMware Tanzu: Biến ảo hóa thành hạ tầng Container chuyên nghiệp

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

Xóa bỏ rào cản giữa Quản trị viên hệ thống và Lập trình viên

Anh em làm quản trị hạ tầng chắc không lạ gì cảnh đội vận hành (Ops) và đội phát triển (Dev) nói chuyện như ở hai hành tinh khác nhau. Hồi mình quản lý cụm 8 host ESXi chạy Dell R740, Ops chỉ muốn giữ vCenter ổn định, theo dõi từng máy ảo (VM). Trong khi đó, Dev liên tục đòi hỏi Kubernetes (K8s) để đẩy code nhanh hơn.

Mỗi lần Dev cần Cluster, mình lại phải hì hục tạo từng VM, cài OS, rồi cấu hình K8s thủ công. Cách làm này cực kỳ tốn thời gian và khó kiểm soát tài nguyên. Khi hệ thống lỗi, việc truy vết giữa lớp ảo hóa và lớp container là một cơn ác mộng. VMware Tanzu ra đời để chấm dứt tình trạng này. Nó biến vSphere thành một nền tảng chạy song song cả VM và Container trên cùng một giao diện quản lý duy nhất.

VMware Tanzu: Khi ESXi trở thành một Worker Node

Thực tế, VMware Tanzu không đơn thuần là một phần mềm cài thêm. Đây là bộ giải pháp biến vSphere thành hạ tầng hỗ trợ Kubernetes nguyên bản (Native K8s). Thay vì chạy K8s chồng lên VM theo kiểu “lồng ghép” truyền thống, Tanzu tích hợp thẳng vào nhân của ESXi thông qua một agent gọi là Spherelet.

Khi kích hoạt Tanzu, menu Workload Management sẽ xuất hiện trong vCenter. Lúc này, các Cluster K8s được đối xử như những đối tượng tài nguyên thông thường. Điểm ăn tiền ở đây là anh em có thể dùng vMotion, DRS và High Availability (HA) cho cả các ứng dụng container mà không cần cấu hình phức tạp.

Điều kiện cần: Đừng để hạ tầng “hụt hơi”

Triển khai Tanzu trong môi trường doanh nghiệp yêu cầu chuẩn bị kỹ lưỡng. Dựa trên kinh nghiệm thực tế vận hành cụm 8 host với khoảng 200 VM, mình đúc kết các thông số tối thiểu sau:

  • vSphere License: Anh em cần vSphere 7.0 Update 1 trở lên. License phải là bản vSphere với Tanzu (Basic, Standard hoặc Advanced).
  • Network: Đây là phần dễ gây rối nhất. Nếu không có ngân sách cho NSX-T, hãy dùng vSphere Distributed Switch (VDS). Kết hợp với đó là một Load Balancer ngoài như HAProxy để tiết kiệm chi phí.
  • Storage: Bắt buộc có Storage Policy. Mình khuyến khích dùng vSAN để tận dụng tối đa tính năng vSphere Container Storage Interface (CSI).
  • Tài nguyên dự phòng: Mỗi Supervisor Cluster sẽ chiếm khoảng 16GB RAM và 4 vCPU cho các máy ảo điều khiển. Hãy đảm bảo host của anh em còn trống ít nhất 20% tài nguyên để bù đắp khi có sự cố.

4 bước triển khai thực tế

Bước 1: Kích hoạt Workload Management

Đầu tiên, anh em vào vCenter, tìm đến mục Workload Management và chọn Get Started. Hệ thống sẽ quét các Cluster vật lý đủ điều kiện.

Tại phần Networking, nếu chọn VDS, anh em cần chuẩn bị sẵn 3 dải IP riêng biệt. Một dải cho Management (khoảng 5 IP), một dải cho Workload (nên dùng /23 hoặc /22) và một dải IP VIP cho Load Balancer.

Bước 2: Cấu hình HAProxy Appliance

Vì K8s cần một điểm truy cập duy nhất (API Server), HAProxy đóng vai trò cửa ngõ. Sau khi deploy file OVA của HAProxy, hãy chú ý cấu hình Data Plane API. Đây là giao thức giúp vCenter tự động đẩy các cấu hình cân bằng tải xuống HAProxy mỗi khi Dev tạo một Service mới trong K8s.

Bước 3: Thiết lập Namespace và hạn mức

Namespace trong Tanzu hoạt động giống như Resource Pool. Anh em có thể giới hạn đội Dev-01 chỉ được dùng tối đa 64GB RAM và 2TB Storage.

# Đăng nhập vào Cluster bằng công cụ kubectl chuyên dụng của VMware
kubectl vsphere login --server=10.10.20.50 --vsphere-username [email protected] --insecure-skip-verify

Bước 4: Khởi tạo Tanzu Kubernetes Grid (TKG) Cluster

Đây là lúc sức mạnh tự động hóa lên tiếng. Thay vì cài cắm thủ công, anh em chỉ cần gửi một file YAML cho vCenter. Hệ thống sẽ tự động clone VM template và cấu hình mạng.

Ví dụ file cấu hình cho môi trường Production:

apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TanzuKubernetesCluster
metadata:
  name: tkg-prod-cluster
  namespace: production-space
spec:
  topology:
    controlPlane:
      count: 3 # Đảm bảo High Availability cho lớp điều khiển
      class: best-effort-medium
      storageClass: vsan-default-policy
    workers:
      count: 5 # Có thể scale lên dễ dàng sau này
      class: best-effort-large
      storageClass: vsan-default-policy
  distribution:
    version: v1.21

Chỉ mất khoảng 10-15 phút để vCenter dựng xong một Cluster K8s chuẩn chỉnh cho doanh nghiệp.

Kinh nghiệm “xương máu” khi vận hành

Sau hơn một năm chạy Tanzu trên hệ thống thực tế, mình có vài lưu ý cho anh em:

  1. Kiểm soát Orphaned Volumes: K8s thường tạo các Persistent Volume (PV) rất nhanh. Đôi khi Dev xóa Cluster nhưng volume vẫn treo trên vSAN. Hãy kiểm tra mục Cloud Native Storage thường xuyên để tránh đầy disk.
  2. Lỗi DNS là lỗi phổ biến nhất: 90% trường hợp triển khai thất bại là do DNS không phân giải được tên miền của vCenter hoặc ESXi. Hãy khai báo bản ghi A và PTR đầy đủ trước khi bắt đầu.
  3. Phân bổ Host Group: Với cụm 8 host, mình thường dùng tính năng VM-Host Anti-Affinity. Quy tắc này giúp các máy ảo Control Plane không bao giờ nằm chung trên một host vật lý, tránh tình trạng một host sập kéo theo cả Cluster chết theo.

Lời kết

Tích hợp Kubernetes vào vSphere không chỉ đơn giản là chạy theo công nghệ mới. Nó thực sự giúp quản trị viên nắm quyền kiểm soát hạ tầng trong khi vẫn đáp ứng được tốc độ của đội Dev. Khi mọi thứ đã vào guồng, việc quản lý hàng trăm container cũng trở nên nhẹ nhàng như quản lý vài máy ảo trước đây.

Share: