---
title: Kubernetes 與私有雲
description: 在 CloudStack 上銷售 Kubernetes 叢集 (CKS) 與具備專用頻寬的私有雲 (VPC)：所需的產品組合以及連線位置。
url: https://nexcmp.com/zh-tw/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)。私有雲：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)、防火牆規則 (network ACLs) 以及虛擬機器的私有網路 (CloudStack VPC)。此服務按**頻寬方案**銷售，提供專用且不限流量的速率（例如 50、100、500 Mbps、1 Gbps 與 3 Gbps）。預設情況下，每位客戶可擁有一個 VPC。

兩者皆建置於 [CloudStack](https://nexcmp.com/zh-tw/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-tw/docs/infrastructure/cloudstack/#create-a-dedicated-account-and-api-key)。 |
| `endpoint.url` | CloudStack 全域設定必須指向您的管理 API，且必須能從叢集虛擬機器存取。NexCMP 會顯示該數值與端點檢查的結果。 |
| 版本 | 至少有一個支援的 Kubernetes 版本項目及其二進位檔 ISO，狀態為 **Enabled**。已過支援周期的版本不得上架銷售。 |
| 控制平面方案 | 一個免費的服務方案，具有**剛好 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，將其託管在網頁伺服器上並進行註冊：

   ```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** 的網路方案（複製預設的「VPC 網路的隔離網路方案」），並將 **Network rate (Mb/s)** 設定為該方案的速度：`50`、`100`、`500`、`1000`、`3000`。啟用每個方案。
4. 為已鎖定的 VPC 建立另一個**網路速率為 1** (`VPC-LOCKED-1M`) 的方案：客戶仍可透過 SSH 連線到其伺服器，但速度會受到限制。
5. 請記住每個方案的 UUID。NexCMP 在接下來的章節中會需要它們。

::: warning 預設的方案 ID 不存在於你的雲端環境中
Private Cloud 表單中預先填入了屬於其他 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 上限將會顯示警告），設定 **Max workers per cluster**（1 到 9：CKS 允許包含控制節點在內共 10 個節點），將 **Enable CKS for this backend** 切換為開啟，然後按一下 **Save**。在選擇方案之前，此開關將維持停用狀態。

      ![Kubernetes (CKS) 標籤頁，已選擇控制平面方案並顯示 CKS 狀態卡片](https://nexcmp.com/zh-tw/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-tw/docs/images/infrastructure/kubernetes-and-private-cloud-03-policy.webp)

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

1. 開啟 **Services › Private Cloud**（概觀）。在政策卡片中，將 **VPC offering** 與 **Locked offering tier** 替換為你自己的 UUID。檢查各項限制（每個帳號的 VPC 數、層級、每個 VPC 的 VM 與 ACL 規則數、建立所需的方案費用時數餘額、每 24 小時的方案變更次數、其中 0 代表緊急停止的同時作業數）以及 DNS 伺服器。按一下 **Save**（系統會要求輸入原因）。

      ![具有 VPC 方案與鎖定方案欄位的 Private Cloud 概觀](https://nexcmp.com/zh-tw/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-tw/docs/images/infrastructure/kubernetes-and-private-cloud-05-vpc-plan.webp)

3. 將 **Sell Private Cloud** 切換為開啟。若要先行測試，請將測試帳號 ID 新增至 **Beta accounts**：這些帳號可在銷售開關關閉時使用此服務。

## 驗證 {#verify}

1. Kubernetes：狀態卡片會顯示 `kubernetesserviceenabled: true`、良好的端點檢查以及啟用的版本。以客戶身分建立一個單一背景工作節點的測試叢集；它應該會達到執行中狀態，且 `kubectl get nodes` 應該會顯示其就緒。事後請將其刪除：網路與 IP 將會返回集區中。
2. Private Cloud：以測試客戶身分使用最小的方案建立 VPC。VPC 應顯示為使用中，某個層級會取得其子網路，該層級中的 VM 透過 VPC 路由器連線至網際網路，且 **Change plan** 至較大方案可在約 20 秒內生效而不會中斷連線。

## 限制與注意事項 {#limits-and-notes}

- Kubernetes：背景工作節點的計費方式與方案價格的 VM 相同，且在 VM 限制中計入 VM 數量。由於 CKS 限制 10 個節點，因此一個叢集最多只能有 9 個背景工作節點。
- Kubernetes：叢集的控制平面、路由器和公開 IP 對客戶而言是免費的；其成本由你承擔。
- Private Cloud：所有方案皆為**不計量**。表單中的價格為越南盾每月；成本欄位使用的是非你所有的參考價格，因此請使用你自己的數字。
- 鎖定的 VPC 限制為 1 Mbps，不予計費且不會自動刪除。
- Private Cloud 每個 VPC 使用一個路由器，而非備援對。若其主機故障，CloudStack 會在幾分鐘內重建它。

## 故障排除 {#troubleshooting}

| 症狀 | 原因 | 修正方式 |
|---|---|---|
| `cp_offering_invalid` / 「此方案不是 2 vCPU / 2048 MB / limitcpuuse」 | 控制平面方案有其他大小或沒有 CPU 上限 | 如步驟 3 建立方案並重新選擇。 |
| **Enable CKS** 開關已關閉 | 未選擇控制平面方案 | 請先選擇一個。 |
| `kubernetesserviceenabled: false` | CloudStack 中的 CKS 已關閉 | 請啟用它並重新啟動管理伺服器。 |
| 端點檢查失敗 | 無法從叢集虛擬機器連線至 `endpoint.url` | 設定可連線的 URL，重新啟動管理伺服器，然後點擊 **Recheck**。 |
| 「EOL: 無法啟用銷售」 | 版本已過生命週期終止 (EOL) 日期 | 註冊較新的版本。 |
| 「沒有版本：點擊從 CloudStack 同步」 | 未註冊 Kubernetes 版本 | 註冊版本並同步。 |
| 「CKS 後端為關閉：即使啟用銷售旗標，客戶也無法建立叢集」 | 銷售開關已開啟但 CKS 後端為關閉 | 在 CloudStack 分頁上啟用 CKS。 |
| 「至少必須有 1 個方案在販售中」 | 最後一個背景工作節點方案已被移除 | 保留至少一個方案，或關閉 Kubernetes 銷售。 |
| 叢集建立卡住 | 容量不足或缺少 ISO | 檢查容量分頁與版本的 ISO 狀態。 |
| 新 VPC 在第一步失敗 | VPC 方案或層級方案 ID 無效 | 將每個方案 UUID 替換為來自您 CloudStack 的 UUID。 |
| 「cs_offering_id 必須是 UUID」 | 方案 ID 不是 UUID | 貼上來自 `cmk list networkofferings` 的 ID。 |
| 方案變更失敗 | 新的層級方案不存在或網路速率錯誤 | 檢查方案 UUID 及其網路速率。 |


