---
title: Kubernetes và Private Cloud
description: Bán cụm Kubernetes (CKS) và Private Cloud băng thông riêng (VPC) trên CloudStack: các offering cần có và vị trí cấu hình kết nối.
url: https://nexcmp.com/vi/docs/infrastructure/kubernetes-and-private-cloud/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Kubernetes và Private Cloud {#kubernetes-and-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 {#what-it-does}

- **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](https://nexcmp.com/vi/docs/infrastructure/cloudstack/) và sử dụng API thông qua cùng một kết nối.

## Yêu cầu {#requirements}

### Kubernetes {#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](https://nexcmp.com/vi/docs/infrastructure/cloudstack/#create-a-dedicated-account-and-api-key). |
| `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 {#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 {#prepare-the-infrastructure}

### Kubernetes: kích hoạt CKS và thêm phiên bản {#kubernetes-enable-cks-and-add-versions}

1. Kích hoạt dịch vụ và cấu hình endpoint, sau đó khởi động lại management server:

   ```bash
   cmk 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-management
   ```

   `endpoint.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.

2. 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.sh` từ mã nguồn CloudStack, lưu trữ trên một web server và đăng ký file ISO này:

   ```bash
   cmk 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,isostate
   ```

   Chờ cho trạng thái ISO chuyển sang **Ready** và phiên bản ở trạng thái **Enabled**.

3. Tạo control-plane offering, giới hạn trong domain của NexCMP:

   ```bash
   cmk create serviceoffering name=K8S-CP-2-2 displaytext="Kubernetes control plane" \
     cpunumber=2 cpuspeed=1000 memory=2048 limitcpuuse=true offerha=false domainid=<domain-id>
   ```

4. Kiểm tra xem CKS network offering đã được bật chưa:

   ```bash
   cmk list networkofferings state=Enabled forvpc=false filter=id,name
   ```

### Private Cloud: tạo các offering {#private-cloud-create-the-offerings}

Trong CloudStack UI (**Service Offerings › Network Offerings › Add network offering**) hoặc bằng `cmk`:

1. Liệt kê những gì bạn hiện có:

   ```bash
   cmk list vpcofferings filter=id,name,state
   cmk list networkofferings forvpc=true filter=id,name,networkrate,state
   ```

2. Sử 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.
3. Đố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.
4. 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.
5. Lưu lại UUID của từng offering. NexCMP sẽ cần chúng trong phần tiếp theo.

::: warning 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 {#connect-in-nexcmp}

### Kubernetes {#kubernetes-1}

1. 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.url` với **Endpoint check**, CKS network offering, các cài đặt `cloud.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ì đó.
2. 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.

      ![Tab Kubernetes (CKS) với control plane offering đã chọn và thẻ trạng thái CKS](https://nexcmp.com/vi/docs/images/infrastructure/kubernetes-and-private-cloud-01-cks.webp)

3. 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.


4. 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.

      ![Kubernetes policy với các worker plan và công tắc mở bán](https://nexcmp.com/vi/docs/images/infrastructure/kubernetes-and-private-cloud-03-policy.webp)

### Private Cloud {#private-cloud-1}

1. 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).

      ![Tổng quan Private Cloud với các trường VPC offering và locked offering](https://nexcmp.com/vi/docs/images/infrastructure/kubernetes-and-private-cloud-04-vpc-policy.webp)

2. 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.

      ![Hộp thoại Edit plan cho gói băng thông Private Cloud](https://nexcmp.com/vi/docs/images/infrastructure/kubernetes-and-private-cloud-05-vpc-plan.webp)

3. 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 {#verify}

1. 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 nodes` sẽ hiển thị ready. Xóa cluster sau đó: network và IP sẽ được trả lại pool.
2. 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 ý {#limits-and-notes}

- 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ố {#troubleshooting}

| 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 đó. |


