---
title: Kubernetes and Private Cloud
description: CloudStack에서 Kubernetes 클러스터(CKS) 및 전용 대역폭 Private Cloud(VPC) 판매: 필수 오퍼링 및 연결 위치.
url: https://nexcmp.com/ko/docs/infrastructure/kubernetes-and-private-cloud/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Kubernetes and Private Cloud {#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 클러스터를 생성합니다. 제어 플레인은 무료이며 고객은 **작업자** 노드 비용을 지불합니다. NexCMP는 각 클러스터에 대해 별도의 네트워크와 공인 IP를 생성하고 고객별 클러스터를 분리합니다.
- **Private Cloud.** 고객은 라우터, 서브넷(티어), 방화벽 규칙(네트워크 ACL) 및 내부 가상 머신이 포함된 프라이빗 네트워크(CloudStack VPC)를 제공받습니다. 전용의 무제한 속도(예: 50, 100, 500 Mbps, 1 및 3 Gbps)를 제공하는 **대역폭 플랜**으로 판매됩니다. 각 고객은 기본적으로 하나의 VPC를 가질 수 있습니다.

두 기능 모두 [CloudStack](https://nexcmp.com/ko/docs/infrastructure/cloudstack/)을 기반으로 구축되었으며 동일한 연결을 통해 해당 API를 사용합니다.

## 요구 사항 {#requirements}

### Kubernetes {#kubernetes}

| 항목 | 요구 사항 |
|---|---|
| CloudStack | 4.23 (테스트됨). CKS가 **활성화**되어 있어야 합니다(`cloud.kubernetes.service.enabled = true`). |
| 계정 | 전용 도메인의 **Domain Admin** 계정 (NexCMP가 고객별로 CloudStack 프로젝트와 해당 리소스 제한을 생성할 수 있도록 합니다). [CloudStack](https://nexcmp.com/ko/docs/infrastructure/cloudstack/#create-a-dedicated-account-and-api-key)을 참조하세요. |
| `endpoint.url` | CloudStack 글로벌 설정은 클러스터 VM에서 접근할 수 있는 관리 API를 가리켜야 합니다. NexCMP는 엔드포인트 확인 값과 결과를 표시합니다. |
| 버전 | 바이너리 ISO가 포함된, **Enabled** 상태의 Kubernetes 지원 버전 항목이 하나 이상 있어야 합니다. 지원 종료(EOL)가 지난 버전은 판매할 수 없습니다. |
| 컨트롤 플레인 오퍼링 | 계정에 표시되는, **정확히 2 vCPU, 2048 MB RAM 및 CPU 제한**이 있는 무료 서비스 오퍼링 (`limitcpuuse = true`). 서버는 다른 모든 요청을 `cp_offering_invalid`(으)로 거부합니다. |
| 네트워크 | 활성화된 CKS 호환 격리 네트워크 오퍼링. |
| IP | 판매 가능한 대역 내의 무료 공인 IPv4 주소; 각 클러스터는 하나씩 사용합니다. |
| 용량 | 각 클러스터는 컨트롤 플레인과 소형 라우터 VM용으로 2~4 GB의 RAM을 사용합니다. 용량 탭을 확인하세요. |

### Private Cloud {#private-cloud}

| 항목 | 요구 사항 |
|---|---|
| CloudStack | 4.23 (테스트됨), VPC 활성화. |
| VPC 오퍼링 | VPC 오퍼링 1개. 듀얼 스택 오퍼링은 각 티어에도 IPv6 /64를 부여합니다. |
| 티어 네트워크 오퍼링 | **대역폭 플랜당 하나의 네트워크 오퍼링** (VPC용으로 생성, **네트워크 속도**(Mbps)는 해당 플랜과 동일)과, 미납으로 VPC가 잠겼을 때 적용되는 **1 Mbps**의 **잠긴** 오퍼링 1개가 필요합니다. |
| 계정 | 전용 계정 (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`은(는) 클러스터의 컨트롤러가 콜백하므로, 클러스터 VM이 도달할 수 있는 주소여야 합니다.

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: 오퍼링 생성 {#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 양식에는 다른 CloudStack 설치에 속하는 오퍼링 UUID가 미리 채워져 있습니다. **모두** 본인의 UUID로 교체하세요. 그렇지 않으면 첫 번째 VPC 주문이 실패합니다.
:::

## NexCMP에서 연결 {#connect-in-nexcmp}

### Kubernetes {#kubernetes-1}

1. **Infrastructure › Cloud provider › CloudStack**을 열고 **Kubernetes (CKS)** 탭을 선택합니다. 오른쪽 **CKS status on CloudStack (read-only)** 카드에 `kubernetesserviceenabled`, `endpoint.url`가 **Endpoint check**, CKS 네트워크 오퍼링, `cloud.kubernetes.*` 설정 및 ISO와 버전 목록과 함께 표시됩니다. 문제를 해결한 후 **Recheck**를 클릭합니다.
2. **Sales config**에서 **Control plane Offering**을 선택하고(exact 2 vCPU / 2048 MB / CPU cap이 아니면 경고가 표시됨), **Max workers per cluster**(1~9: CKS는 제어 노드를 포함해 10개 노드 허용)를 설정한 다음, **Enable CKS for this backend** 스위치를 켜고 **Save**를 클릭합니다. 오퍼링이 선택될 때까지 스위치는 비활성화 상태로 유지됩니다.

      ![제어판 오퍼링이 선택되고 CKS 상태 카드가 표시된 Kubernetes (CKS) 탭](https://nexcmp.com/ko/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/ko/docs/images/infrastructure/kubernetes-and-private-cloud-03-policy.webp)

### Private Cloud {#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/ko/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/ko/docs/images/infrastructure/kubernetes-and-private-cloud-05-vpc-plan.webp)

3. **Sell Private Cloud** 스위치를 켭니다. 먼저 테스트하려면 테스트 계정 ID를 **Beta accounts**에 추가하세요. 해당 계정은 판매 스위치가 꺼져 있어도 서비스를 이용할 수 있습니다.

## 확인 {#verify}

1. Kubernetes: 상태 카드에 `kubernetesserviceenabled: true`, 양호한 엔드포인트 확인 및 활성화된 버전이 표시됩니다. 고객 권한으로 1개의 워커가 있는 테스트 클러스터를 생성하면 실행 중 상태가 되어야 하고 `kubectl get nodes`에 준비 완료 상태가 표시되어야 합니다. 생성 후 삭제하면 네트워크와 IP가 풀로 반환됩니다.
2. Private Cloud: 테스트 고객으로서 가장 작은 요금제로 VPC를 생성합니다. VPC가 활성 상태로 표시되고, 티어에 서브넷이 할당되며, 티어의 VM이 VPC 라우터를 통해 인터넷에 접속할 수 있고, **Change plan**으로 더 큰 요금제로 변경하면 연결 끊김 없이 약 20초 내에 적용됩니다.

## 제한 사항 및 참고 사항 {#limits-and-notes}

- Kubernetes: 워커는 VM 요금제 가격으로 과금되며 VM 제한에서 VM으로 산정됩니다. 10개 노드라는 CKS 제한으로 인해 클러스터에는 최대 9개의 워커를 둘 수 있습니다.
- Kubernetes: 클러스터의 컨트롤 플레인, 라우터 및 공인 IP는 고객에게 무료로 제공되며, 비용은 귀하가 부담합니다.
- Private Cloud: 모든 요금제는 **unmetered**입니다. 양식의 가격은 월별 베트남 동 단위이며, 비용 열은 귀하의 가격이 아닌 참고 가격을 사용하므로 자체 금액을 사용해야 합니다.
- 잠긴 VPC는 1 Mbps로 제한되며, 과금되지 않고 자동으로 삭제되지 않습니다.
- Private Cloud는 이중화된 쌍이 아닌 VPC당 하나의 라우터를 사용합니다. 호스트에 장애가 발생하면 CloudStack이 몇 분 안에 재구축합니다.

## Troubleshooting {#troubleshooting}

| 증상 | 원인 | 해결 방법 |
|---|---|---|
| `cp_offering_invalid` / "본 오퍼링은 2 vCPU / 2048 MB / limitcpuuse가 아닙니다" | 컨트롤 플레인 오퍼링의 크기가 다르거나 CPU 제한이 없음 | 3단계와 같이 오퍼링을 생성하고 다시 선택합니다. |
| **Enable CKS** 스위치가 꺼져 있음 | 선택된 컨트롤 플레인 오퍼링이 없음 | 먼저 하나를 선택하세요. |
| `kubernetesserviceenabled: false` | CloudStack에서 CKS가 꺼져 있음 | 이를 활성화하고 관리 서버를 재시작합니다. |
| 엔드포인트 확인 실패 | 클러스터 VM에서 `endpoint.url`에 접근할 수 없음 | 접근 가능한 URL을 설정하고, 관리 서버를 재시작한 후 **Recheck**을 클릭합니다. |
| "지원 종료(EOL): 판매용으로 활성화할 수 없음" | 버전의 지원 종료일이 지남 | 더 최신 버전을 등록합니다. |
| "버전 없음: Sync from CloudStack 클릭" | 등록된 Kubernetes 버전이 없음 | 버전을 등록하고 동기화합니다. |
| "CKS 백엔드가 꺼져 있음: 판매 플래그가 켜져 있어도 고객이 클러스터를 생성할 수 없음" | 판매 스위치는 켜져 있으나 CKS 백엔드가 꺼져 있음 | CloudStack 탭에서 CKS를 활성화합니다. |
| "최소 1개의 플랜이 판매 중이어야 함" | 마지막 워커 요금제가 제거됨 | 최소 하나의 요금제를 유지하거나 Kubernetes 판매를 끄세요. |
| 클러스터 생성 중 멈춤 | 용량이 부족하거나 ISO가 누락됨 | 용량 탭과 버전의 ISO 상태를 확인합니다. |
| 새 VPC가 첫 단계에서 실패함 | VPC 오퍼링 또는 티어 오퍼링 ID가 유효하지 않음 | 모든 오퍼링 UUID를 CloudStack의 것으로 교체합니다. |
| "cs_offering_id는 UUID여야 함" | 오퍼링 ID가 UUID가 아님 | `cmk list networkofferings`에서 ID를 복사하여 붙여넣으세요. |
| 요금제 변경 실패 | 새 티어 오퍼링이 존재하지 않거나 네트워크 레이트가 잘못되었습니다 | 오퍼링 UUID와 네트워크 레이트를 확인하세요. |


