---
title: Kubernetes与私有云
description: 在CloudStack上销售Kubernetes集群（CKS）与独享带宽私有云（VPC）：所需服务方案及对接位置。
url: https://nexcmp.com/zh-cn/docs/infrastructure/kubernetes-and-private-cloud/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Kubernetes与私有云 {#kubernetes-and-private-cloud}

> **管理后台路径：**Kubernetes：Infrastructure › Cloud provider › CloudStack › Kubernetes (CKS)（`/infra/cloudstack?tab=k8s`），然后访问Services › Kubernetes (Overview, Clusters, Versions, Policy)。Private Cloud：Services › Private Cloud (Overview `/vpc`, VPC `/vpc/list`, Plans & pricing `/vpc/plans`)。请在System › Admin › License & updates中启用这两个模块。

## 功能说明 {#what-it-does}

- **Kubernetes。**客户可通过CloudStack Kubernetes Service（CKS）在您的CloudStack上创建托管Kubernetes集群。控制平面免费，客户仅需为**worker**节点付费。NexCMP会为每个集群创建独立网络和公网IP，并将各客户的集群相互隔离。
- **Private Cloud。**客户可获得包含路由器、子网（tiers）、防火墙规则（网络ACL）及内部虚拟机的私有网络（即CloudStack VPC）。该服务按**带宽方案**销售，提供独享且不限流量的速率（例如50、100、500 Mbps，1和3 Gbps）。默认情况下，每位客户可拥有一个VPC。

两者均基于[CloudStack](https://nexcmp.com/zh-cn/docs/infrastructure/cloudstack/)构建，并通过相同的连接调用其API。

## 前提条件 {#requirements}

### Kubernetes {#kubernetes}

| 项目 | 要求 |
|---|---|
| CloudStack | 4.23（已测试）。必须**启用**CKS（`cloud.kubernetes.service.enabled = true`）。 |
| 账户 | 专属域中的**Domain Admin**账户，以便NexCMP为每个客户创建CloudStack项目并在其中设置资源限制。参见[CloudStack](https://nexcmp.com/zh-cn/docs/infrastructure/cloudstack/#create-a-dedicated-account-and-api-key)。 |
| `endpoint.url` | CloudStack全局设置必须指向您的管理API，且可从集群虚拟机访问。NexCMP会显示该值及端点检查结果。 |
| 版本 | 至少一个包含二进制ISO的Kubernetes支持版本条目，状态为**Enabled**。已停止支持（EOL）的版本无法上架销售。 |
| 控制平面方案 | 规格**恰好为2 vCPU、2048 MB RAM且限制CPU上限**（`limitcpuuse = true`）的免费服务方案，对该账户可见。服务器将拒绝任何其他规格并返回`cp_offering_invalid`。 |
| 网络 | 已启用的支持CKS的隔离网络方案。 |
| IP | 可售范围内的空闲公网IPv4地址；每个集群占用一个。 |
| 容量 | 每个集群会消耗2至4 GB RAM用于控制平面和一台小型路由器虚拟机。请留意容量选项卡。 |

### 私有云 {#private-cloud}

| 项目 | 要求 |
|---|---|
| CloudStack | 4.23（已测试）且启用VPC。 |
| VPC方案 | 一个VPC方案。双栈方案还会为每个分层分配一个IPv6 /64。 |
| 分层网络方案 | **每个带宽套餐对应一个网络方案**，针对VPC创建，其**网络速率**（Mbps）与套餐一致；另需一个**1 Mbps**的**锁定**方案，在VPC因欠费锁定后应用。 |
| 账户 | 专属账户（推荐Domain Admin）。VPC网络保留在账户中，而非项目中。 |
| IP | 空闲公网IPv4地址（每个VPC使用一个用于源NAT）。 |
| 地址空间 | 每个VPC都会从`10.128.0.0/9`中获取一个/16。请确保您自己的网络中不使用该范围。 |
| 依赖项 | 已连接CloudStack；**Private Cloud**模块。 |

## 准备基础设施 {#prepare-the-infrastructure}

### Kubernetes：启用CKS并添加版本 {#kubernetes-enable-cks-and-add-versions}

1. 启用该服务并设置端点，然后重启管理服务器：

   ```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`，因此它必须是集群虚拟机可以访问的地址。

2. 使用CloudStack源码树中的`create-kubernetes-binaries-iso.sh`脚本为要销售的版本构建Kubernetes二进制ISO，将其托管在Web服务器上并注册：

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

   等待ISO状态变为**Ready**且版本处于**Enabled**状态。

3. 创建限制在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. 检查CKS网络方案是否已启用：

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

### 私有云：创建方案 {#private-cloud-create-the-offerings}

在CloudStack UI中（**Service Offerings › Network Offerings › Add network offering**）或使用`cmk`：

1. 列出现有方案：

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

2. 使用已启用的VPC方案（若需要IPv6则使用双栈）。如需新方案，可克隆CloudStack默认VPC方案并启用。
3. 针对销售的**每个**带宽套餐，**为VPC**创建一个网络方案（克隆默认的“isolated network offering for VPC networks”），并将**Network rate (Mb/s)**设置为该套餐的速率：`50`、`100`、`500`、`1000`、`3000`。启用每个方案。
4. 为被锁定的VPC额外创建一个**网络速率为1**（`VPC-LOCKED-1M`）的方案：客户仍可通过SSH访问其服务器，但速率会受到限制。
5. 记录每个方案的UUID。NexCMP在下一节中需要用到它们。

::: warning 预置的方案ID在您的云中不存在
Private Cloud表单预填的方案UUID属于另一个CloudStack安装环境。请将**每一个**都替换为您自己的UUID，否则首个VPC订单将会失败。
:::

## 在NexCMP中连接 {#connect-in-nexcmp}

### Kubernetes {#kubernetes-1}

1. 打开**Infrastructure › Cloud provider › CloudStack**并选择**Kubernetes (CKS)**标签页。右侧卡片**CKS status on CloudStack (read-only)**会显示`kubernetesserviceenabled`、带有**Endpoint check**的`endpoint.url`、CKS网络方案、`cloud.kubernetes.*`设置以及ISO和版本列表。修复问题后，点击**Recheck**。
2. 在**Sales config**中，选择**Control plane Offering**（若非严格为2 vCPU / 2048 MB / CPU cap则会显示警告），设置**Max workers per cluster**（1到9：CKS包含控制节点在内最多允许10个节点），开启**Enable CKS for this backend**开关并点击**Save**。在选定方案之前，该开关将保持禁用状态。

      ![已选定控制平面方案的Kubernetes (CKS)标签页与CKS状态卡片](https://nexcmp.com/zh-cn/docs/images/infrastructure/kubernetes-and-private-cloud-01-cks.webp)

3. 打开**Services › Kubernetes › Versions**并点击**Sync from CloudStack**。为您销售的版本开启**Available for new clusters**开关，设置默认版本，并可根据需要设置**End of life (EOL)**日期。


4. 打开**Services › Kubernetes › Policy**。在**Worker plans**中添加方案并填写**Plan code**（A-Z、0-9、连字符，最多16个字符）。设置**NVMe per worker (GB)**、**Min and max workers**以及集群限制（每个账户的活跃集群数、24小时内创建次数、全局上限、并发CKS操作数）。然后开启**Sell Kubernetes (CKS)**开关。必须至少保留一个在售方案。

      ![包含工作节点方案和销售开关的Kubernetes策略](https://nexcmp.com/zh-cn/docs/images/infrastructure/kubernetes-and-private-cloud-03-policy.webp)

### 私有云 {#private-cloud-1}

1. 打开**Services › Private Cloud**（Overview）。在策略卡片中将**VPC offering**和**Locked offering tier**替换为您自己的UUID。检查各项限制（每个账户的VPC数、每个VPC的分层数、虚拟机数和ACL规则数、创建所需方案费用的小时余额数、24小时内方案变更次数、并发操作数，其中0表示紧急停止）以及DNS服务器。点击**Save**（系统会要求填写原因）。

      ![包含VPC方案与锁定方案字段的Private Cloud概览](https://nexcmp.com/zh-cn/docs/images/infrastructure/kubernetes-and-private-cloud-04-vpc-policy.webp)

2. 打开**Services › Private Cloud › Plans & pricing**。针对每个方案点击**Edit**，并设置**VND price per month**、**On sale**以及网络速率与该方案Mbps相等的**CloudStack tier offering** UUID。该行会显示满载使用下的成本与利润，以便您查看哪些方案低于您的成本。

      ![Private Cloud带宽方案的编辑方案对话框](https://nexcmp.com/zh-cn/docs/images/infrastructure/kubernetes-and-private-cloud-05-vpc-plan.webp)

3. 开启**Sell Private Cloud**开关。如需先进行测试，可将测试账户ID添加到**Beta accounts**：销售开关处于关闭状态时，这些账户仍可使用该服务。

## 验证 {#verify}

1. Kubernetes：状态卡片显示`kubernetesserviceenabled: true`、端点检查正常且已有启用的版本。以客户身份创建一个单工作节点测试集群；集群应达到running状态，且`kubectl get nodes`应显示其就绪。随后将其删除：网络和IP将退回资源池。
2. Private Cloud：以测试客户身份使用最小方案创建VPC。VPC显示为active，分层获取到其子网，该层中的虚拟机通过VPC路由器访问互联网，并且通过**Change plan**升配至更大方案将在约20秒内生效且不中断连接。

## 限制与注意事项 {#limits-and-notes}

- Kubernetes：工作节点按方案价格计费（类似虚拟机），并计入虚拟机的配额限制。由于CKS限制最多10个节点，因此单个集群最多可拥有9个工作节点。
- Kubernetes：集群的控制平面、路由器和公网IP对客户免费；相关成本由您承担。
- Private Cloud：所有方案均为**不限流量**。表单中的价格为每月越南盾；成本列使用的是参考价格而非您的实际成本，因此请使用您自己的数据。
- 锁定的VPC限速为1 Mbps，不计费且不会被自动删除。
- Private Cloud为每个VPC使用单个路由器，而非冗余双机。若其宿主机发生故障，CloudStack会在数分钟内将其重建。

## 故障排查 {#troubleshooting}

| 症状 | 原因 | 解决办法 |
|---|---|---|
| `cp_offering_invalid` / “此Offering不是2 vCPU / 2048 MB / limitcpuuse” | 控制平面计算方案规格不符或未限制CPU使用 | 按步骤3创建计算方案并重新选择。 |
| **Enable CKS**开关处于禁用状态 | 未选择控制平面计算方案 | 请先选择一个计算方案。 |
| `kubernetesserviceenabled: false` | CloudStack中未启用CKS | 启用该功能并重启管理服务器。 |
| 端点检查失败 | 从集群虚拟机无法访问`endpoint.url` | 设置可访问的URL，重启管理服务器，然后点击**Recheck**。 |
| “EOL：无法启用销售” | 该版本已过生命周期结束（EOL）日期 | 注册更新的版本。 |
| “无版本：请点击Sync from CloudStack” | 未注册任何Kubernetes版本 | 注册版本并同步。 |
| “CKS后端为OFF：即使已启用销售标记，客户也无法创建集群” | 销售开关已开启，但CKS后端处于关闭状态 | 在CloudStack标签页中启用CKS。 |
| “至少必须有1个套餐在售” | 移除了最后一个Worker方案 | 保留至少一个方案，或关闭Kubernetes销售。 |
| 集群创建卡住 | 容量不足或缺少ISO | 检查容量标签页以及该版本的ISO状态。 |
| 新建VPC在第一步即失败 | VPC方案或层方案ID无效 | 将每个方案UUID替换为您CloudStack中的有效UUID。 |
| “cs_offering_id必须为UUID” | 方案ID不是有效的UUID格式 | 从`cmk list networkofferings`复制并粘贴对应的id。 |
| 方案变更失败 | 新的层方案不存在或网络速率设置错误 | 检查方案UUID及其网络速率。 |


