Kubernetes và Private Cloud
Vị trí trong admin: Kubernetes: Infrastructure › Cloud provider › CloudStack › Kubernetes (CKS) (
/infra/cloudstack?tab=k8s), sau đó là Services › Kubernetes (Overview, Clusters, Versions, Policy). Private Cloud: Services › Private Cloud (Overview/vpc, VPC/vpc/list, Plans & pricing/vpc/plans). Bật cả hai module tại System › Admin › License & updates.
Chức năng
- Kubernetes. Khách hàng tạo các cụm Kubernetes được quản lý trên CloudStack của bạn bằng CloudStack Kubernetes Service (CKS). Control plane hoàn toàn miễn phí; khách hàng chỉ trả phí cho các node worker. NexCMP tạo một network và IP public riêng cho từng cụm, đồng thời tách biệt các cụm của từng khách hàng.
- Private Cloud. Khách hàng nhận được một mạng riêng (CloudStack VPC) gồm router, subnet (tier), quy tắc tường lửa (network ACL) và các máy ảo bên trong. Dịch vụ được bán theo gói băng thông với tốc độ dành riêng, không giới hạn dung lượng (ví dụ: 50, 100, 500 Mbps, 1 và 3 Gbps). Theo mặc định, mỗi khách hàng có thể sở hữu một VPC.
Cả hai đều được xây dựng trên CloudStack và sử dụng API thông qua cùng một kết nối.
Yêu cầu
Kubernetes
| Hạng mục | Yêu cầu |
|---|---|
| CloudStack | 4.23 (đã kiểm thử). CKS phải được bật (cloud.kubernetes.service.enabled = true). |
| Tài khoản | Tài khoản Domain Admin trong domain chuyên dụng, giúp NexCMP có thể tạo CloudStack project cho từng khách hàng và áp dụng giới hạn tài nguyên bên trong đó. Xem CloudStack. |
endpoint.url | Cài đặt global của CloudStack phải trỏ đến management API của bạn, có thể truy cập được từ các VM trong cụm. NexCMP hiển thị giá trị này cùng kết quả kiểm tra endpoint. |
| Phiên bản | Tối thiểu một mục Kubernetes supported-version kèm ISO binary ở trạng thái Enabled. Không thể mở bán các phiên bản đã hết vòng đời hỗ trợ. |
| Control-plane offering | Một service offering miễn phí với chính xác 2 vCPU, 2048 MB RAM và giới hạn CPU (limitcpuuse = true), hiển thị cho tài khoản. Server sẽ từ chối mọi cấu hình khác kèm cp_offering_invalid. |
| Mạng | Một isolated network offering hỗ trợ CKS đang ở trạng thái kích hoạt. |
| IP | Địa chỉ IPv4 public còn trống trong dải có thể bán; mỗi cụm sử dụng một địa chỉ. |
| Dung lượng | Mỗi cụm tiêu tốn của bạn từ 2 đến 4 GB RAM cho control plane và một VM router nhỏ. Hãy chú ý theo dõi các tab capacity. |
Private Cloud
| Hạng mục | Yêu cầu |
|---|---|
| CloudStack | 4.23 (đã kiểm thử) và đã bật VPC. |
| VPC offering | Một VPC offering. Offering dual-stack cũng sẽ cấp cho mỗi tier một dải IPv6 /64. |
| Tier network offerings | Một network offering cho mỗi gói băng thông, được tạo cho VPC, với network rate (Mbps) tương ứng với gói, kèm theo một offering bị khóa ở mức 1 Mbps được áp dụng khi VPC bị khóa do chưa thanh toán. |
| Tài khoản | Tài khoản chuyên dụng (khuyến nghị dùng Domain Admin). Mạng VPC nằm trong tài khoản, không nằm trong project. |
| IP | Địa chỉ IPv4 public còn trống (mỗi VPC sử dụng một địa chỉ cho source NAT). |
| Không gian địa chỉ | Mỗi VPC nhận một dải /16 từ 10.128.0.0/9. Đảm bảo dải này không bị trùng lặp trên mạng nội bộ của bạn. |
| Phụ thuộc vào | CloudStack đã kết nối; module Private Cloud. |
Chuẩn bị hạ tầng
Kubernetes: kích hoạt CKS và thêm phiên bản
Kích hoạt dịch vụ và cấu hình endpoint, sau đó khởi động lại management server:
bashcmk update configuration name=cloud.kubernetes.service.enabled value=true cmk update configuration name=endpoint.url value=https://cloudstack.example.com/client/api sudo systemctl restart cloudstack-managementendpoint.urlđược controller của cụm gọi lại, vì vậy đây phải là địa chỉ mà các VM trong cụm có thể kết nối tới.Build file ISO binary của Kubernetes cho phiên bản bạn muốn bán bằng script
create-kubernetes-binaries-iso.shtừ mã nguồn CloudStack, lưu trữ trên một web server và đăng ký file ISO này:bashcmk add kubernetessupportedversion name="Kubernetes 1.35.0" semanticversion=1.35.0 \ url=https://files.example.com/setup-v1.35.0-calico-amd64.iso zoneid=<zone-id> \ mincpunumber=2 minmemory=2048 cmk list kubernetessupportedversions filter=name,semanticversion,state,isostateChờ cho trạng thái ISO chuyển sang Ready và phiên bản ở trạng thái Enabled.
Tạo control-plane offering, giới hạn trong domain của NexCMP:
bashcmk create serviceoffering name=K8S-CP-2-2 displaytext="Kubernetes control plane" \ cpunumber=2 cpuspeed=1000 memory=2048 limitcpuuse=true offerha=false domainid=<domain-id>Kiểm tra xem CKS network offering đã được bật chưa:
bashcmk list networkofferings state=Enabled forvpc=false filter=id,name
Private Cloud: tạo các offering
Trong CloudStack UI (Service Offerings › Network Offerings › Add network offering) hoặc bằng cmk:
Liệt kê những gì bạn hiện có:
bashcmk list vpcofferings filter=id,name,state cmk list networkofferings forvpc=true filter=id,name,networkrate,stateSử dụng một VPC offering đang được bật (dual-stack nếu bạn muốn IPv6). Nếu cần tạo mới, hãy nhân bản VPC offering mặc định của CloudStack rồi bật nó lên.
Đối với mỗi gói băng thông bạn bán, hãy tạo một network offering cho VPC (nhân bản "isolated network offering for VPC networks" mặc định) và đặt Network rate (Mb/s) theo tốc độ của gói:
50,100,500,1000,3000. Bật từng offering.Tạo thêm một offering với network rate 1 (
VPC-LOCKED-1M) dành cho các VPC bị khóa: khách hàng vẫn có thể truy cập server qua SSH, nhưng tốc độ sẽ bị giới hạn.Lưu lại UUID của từng offering. NexCMP sẽ cần chúng trong phần tiếp theo.
Các offering ID mặc định không tồn tại trong cloud của bạn
Biểu mẫu Private Cloud được điền sẵn các UUID offering thuộc về một bản cài đặt CloudStack khác. Hãy thay thế từng UUID bằng thông tin của bạn, nếu không đơn hàng VPC đầu tiên sẽ thất bại.
Kết nối trong NexCMP
Kubernetes
Mở Infrastructure › Cloud provider › CloudStack và chọn tab Kubernetes (CKS). Thẻ bên phải CKS status on CloudStack (read-only) hiển thị
kubernetesserviceenabled,endpoint.urlvới Endpoint check, CKS network offering, các cài đặtcloud.kubernetes.*cùng danh sách ISO và phiên bản. Nhấp vào Recheck sau khi bạn sửa đổi gì đó.Tại Sales config, chọn Control plane Offering (cảnh báo sẽ xuất hiện nếu thông số không chính xác là 2 vCPU / 2048 MB / CPU cap), đặt Max workers per cluster (từ 1 đến 9: CKS cho phép 10 node tính cả control node), bật Enable CKS for this backend và nhấn Save. Công tắc sẽ bị vô hiệu hóa cho đến khi một offering được chọn.

Mở Services › Kubernetes › Versions và nhấp vào Sync from CloudStack. Bật Available for new clusters cho các phiên bản bạn bán, đặt phiên bản mặc định và ngày End of life (EOL) nếu muốn.
Mở Services › Kubernetes › Policy. Trong Worker plans, thêm các gói với một Plan code (A-Z, 0-9, dấu gạch nối, tối đa 16 ký tự). Đặt NVMe per worker (GB), Min and max workers và các giới hạn cluster (số cluster đang hoạt động trên mỗi tài khoản, số lượt tạo mỗi 24 giờ, giới hạn toàn cục, các tác vụ CKS đồng thời). Sau đó bật Sell Kubernetes (CKS). Ít nhất một gói phải luôn được mở bán.

Private Cloud
Mở Services › Private Cloud (Overview). Trong thẻ policy, hãy thay thế VPC offering và Locked offering tier bằng UUID của chính bạn. Kiểm tra các giới hạn (số VPC trên mỗi tài khoản, số tier, VM và quy tắc ACL trên mỗi VPC, số dư tính theo số giờ phí gói cần có để tạo, số lần đổi gói mỗi 24 giờ, các tác vụ đồng thời với 0 là dừng khẩn cấp) cùng các DNS server. Nhấp vào Save (sẽ có yêu cầu nhập lý do).

Mở Services › Private Cloud › Plans & pricing. Với mỗi gói, nhấp vào Edit rồi thiết lập VND price per month, On sale cùng UUID CloudStack tier offering có network rate tương ứng với Mbps của gói. Hàng này hiển thị chi phí và lợi nhuận khi sử dụng hết công suất, giúp bạn thấy được gói nào đang dưới giá vốn.

Bật Sell Private Cloud. Để dùng thử trước, hãy thêm ID tài khoản test vào Beta accounts: các tài khoản này có thể sử dụng dịch vụ ngay cả khi công tắc mở bán đang tắt.
Kiểm tra
- Kubernetes: thẻ trạng thái hiển thị
kubernetesserviceenabled: true, kết quả endpoint check tốt và phiên bản đã bật. Hãy tạo thử một cluster một worker dưới tư cách khách hàng; cluster này sẽ chuyển sang trạng thái running vàkubectl get nodessẽ hiển thị ready. Xóa cluster sau đó: network và IP sẽ được trả lại pool. - Private Cloud: tạo một VPC với gói nhỏ nhất dưới vai trò khách hàng thử nghiệm. VPC hiển thị hoạt động, tier nhận subnet, VM trong tier kết nối được Internet qua router của VPC, và thao tác Change plan sang gói lớn hơn có hiệu lực trong khoảng 20 giây mà không làm gián đoạn kết nối.
Giới hạn và lưu ý
- Kubernetes: các worker node được tính phí như VM theo giá gói và tính vào giới hạn số lượng VM. Một cluster có thể có tối đa 9 worker do giới hạn 10 node của CKS.
- Kubernetes: control plane, router và IP public của cluster được miễn phí cho khách hàng; bạn tự chi trả chi phí này.
- Private Cloud: mọi gói cước đều là unmetered. Giá trong biểu mẫu tính bằng Việt Nam đồng mỗi tháng; cột chi phí sử dụng mức giá tham chiếu không phải của bạn, vì vậy hãy dùng số liệu riêng của bạn.
- VPC bị khóa sẽ bị giới hạn băng thông ở mức 1 Mbps, không bị tính phí và không tự động bị xóa.
- Private Cloud sử dụng một router cho mỗi VPC chứ không dùng cặp dự phòng. Nếu host của router gặp sự cố, CloudStack sẽ khởi tạo lại trong vài phút.
Xử lý sự cố
| Hiện tượng | Nguyên nhân | Cách khắc phục |
|---|---|---|
cp_offering_invalid / "Offering này không phải 2 vCPU / 2048 MB / limitcpuuse" | Offering của control-plane có cấu hình khác hoặc không đặt giới hạn CPU | Tạo offering như trong bước 3 và chọn lại. |
| Nút gạt Enable CKS bị vô hiệu hóa | Chưa chọn offering cho control-plane | Hãy chọn một offering trước. |
kubernetesserviceenabled: false | CKS đang tắt trong CloudStack | Bật CKS và khởi động lại management server. |
| Kiểm tra endpoint thất bại | Không thể truy cập endpoint.url từ các VM trong cluster | Thiết lập URL truy cập được, khởi động lại management server, nhấp Recheck. |
| "EOL: không thể bật mở bán" | Phiên bản đã qua ngày ngừng hỗ trợ (end-of-life) | Đăng ký phiên bản mới hơn. |
| "Không có phiên bản: hãy nhấp Sync from CloudStack" | Chưa đăng ký phiên bản Kubernetes nào | Đăng ký phiên bản và đồng bộ. |
| "CKS backend đang TẮT: khách hàng không thể tạo cluster ngay cả khi cờ mở bán đã được bật" | Nút bán đang bật nhưng CKS backend đang tắt | Bật CKS trên tab CloudStack. |
| "Phải có ít nhất 1 plan đang được mở bán" | Gói worker cuối cùng đã bị xóa | Giữ lại ít nhất một gói, hoặc tắt tính năng bán Kubernetes. |
| Cluster bị treo ở trạng thái đang tạo | Không đủ dung lượng hoặc thiếu ISO | Kiểm tra các tab dung lượng và trạng thái ISO của phiên bản. |
| VPC mới tạo thất bại ngay từ bước đầu tiên | ID của VPC offering hoặc tier offering không hợp lệ | Thay thế từng UUID của offering bằng giá trị từ CloudStack của bạn. |
| "cs_offering_id phải là một UUID" | ID của offering không phải là định dạng UUID | Dán id lấy từ cmk list networkofferings. |
| Đổi gói cước thất bại | Tier offering mới không tồn tại hoặc tốc độ mạng không chính xác | Kiểm tra UUID của offering và tốc độ mạng của offering đó. |