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에서 두 모듈 모두 켜세요.
작동 내용
- Kubernetes. 고객은 CloudStack Kubernetes Service(CKS)를 통해 CloudStack에 관리형 Kubernetes 클러스터를 생성합니다. 제어 플레인은 무료이며 고객은 작업자 노드 비용을 지불합니다. NexCMP는 각 클러스터에 대해 별도의 네트워크와 공인 IP를 생성하고 고객별 클러스터를 분리합니다.
- Private Cloud. 고객은 라우터, 서브넷(티어), 방화벽 규칙(네트워크 ACL) 및 내부 가상 머신이 포함된 프라이빗 네트워크(CloudStack VPC)를 제공받습니다. 전용의 무제한 속도(예: 50, 100, 500 Mbps, 1 및 3 Gbps)를 제공하는 대역폭 플랜으로 판매됩니다. 각 고객은 기본적으로 하나의 VPC를 가질 수 있습니다.
두 기능 모두 CloudStack을 기반으로 구축되었으며 동일한 연결을 통해 해당 API를 사용합니다.
요구 사항
Kubernetes
| 항목 | 요구 사항 |
|---|---|
| CloudStack | 4.23 (테스트됨). CKS가 활성화되어 있어야 합니다(cloud.kubernetes.service.enabled = true). |
| 계정 | 전용 도메인의 Domain Admin 계정 (NexCMP가 고객별로 CloudStack 프로젝트와 해당 리소스 제한을 생성할 수 있도록 합니다). CloudStack을 참조하세요. |
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
| 항목 | 요구 사항 |
|---|---|
| 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 모듈. |
인프라 준비
Kubernetes: CKS 활성화 및 버전 추가
서비스를 활성화하고 엔드포인트를 설정한 후 관리 서버를 재시작합니다:
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은(는) 클러스터의 컨트롤러가 콜백하므로, 클러스터 VM이 도달할 수 있는 주소여야 합니다.CloudStack 소스 트리의
create-kubernetes-binaries-iso.sh스크립트를 사용하여 판매하려는 버전에 대한 Kubernetes 바이너리 ISO를 빌드하고, 웹 서버에 호스팅한 뒤 등록합니다: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,isostateISO 상태가 Ready가 되고 버전이 Enabled 상태가 될 때까지 기다립니다.
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>CKS 네트워크 오퍼링이 활성화되어 있는지 확인합니다:
bashcmk list networkofferings state=Enabled forvpc=false filter=id,name
Private Cloud: 오퍼링 생성
CloudStack UI (Service Offerings › Network Offerings › Add network offering) 또는 cmk을(를) 사용하여 진행합니다:
보유한 항목 나열:
bashcmk list vpcofferings filter=id,name,state cmk list networkofferings forvpc=true filter=id,name,networkrate,state활성화된 VPC 오퍼링을 사용합니다 (IPv6을 원할 경우 듀얼 스택). 새로운 오퍼링이 필요한 경우, CloudStack의 기본 VPC 오퍼링을 복제하고 활성화하세요.
판매하는 각 대역폭 플랜에 대해 VPC용 네트워크 오퍼링을 생성하고 (기본 "isolated network offering for VPC networks" 복제), **Network rate (Mb/s)**을(를) 플랜 속도인
50,100,500,1000,3000(으)로 설정합니다. 각 오퍼링을 활성화하세요.잠긴 VPC를 위해 네트워크 속도 1(
VPC-LOCKED-1M)인 오퍼링을 하나 더 생성합니다. 고객은 SSH를 통해 서버에 계속 접속할 수 있지만 속도가 제한됩니다.모든 오퍼링의 UUID를 기록해 둡니다. 다음 섹션에서 NexCMP에 필요합니다.
제공된 오퍼링 ID가 클라우드에 존재하지 않음
Private Cloud 양식에는 다른 CloudStack 설치에 속하는 오퍼링 UUID가 미리 채워져 있습니다. 모두 본인의 UUID로 교체하세요. 그렇지 않으면 첫 번째 VPC 주문이 실패합니다.
NexCMP에서 연결
Kubernetes
Infrastructure › Cloud provider › CloudStack을 열고 Kubernetes (CKS) 탭을 선택합니다. 오른쪽 CKS status on CloudStack (read-only) 카드에
kubernetesserviceenabled,endpoint.url가 Endpoint check, CKS 네트워크 오퍼링,cloud.kubernetes.*설정 및 ISO와 버전 목록과 함께 표시됩니다. 문제를 해결한 후 Recheck를 클릭합니다.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를 클릭합니다. 오퍼링이 선택될 때까지 스위치는 비활성화 상태로 유지됩니다.

Services › Kubernetes › Versions를 열고 Sync from CloudStack을 클릭합니다. 판매할 버전의 Available for new clusters 스위치를 켜고, 기본값 및 원하는 경우 End of life (EOL) 날짜를 설정합니다.
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)**를 켭니다. 적어도 하나의 플랜은 판매 중 상태를 유지해야 합니다.

Private Cloud
Services › Private Cloud(개요)를 엽니다. 정책 카드에서 VPC offering 및 Locked offering tier를 본인의 UUID로 교체합니다. 제한 사항(계정당 VPC, 계층, VPC당 VM 및 ACL 규칙, 생성에 필요한 플랜 요금의 시간 단위 잔액, 24시간당 플랜 변경, 0이 긴급 정지를 의미하는 동시 작업)과 DNS 서버를 확인합니다. Save를 클릭합니다(사유를 묻는 창이 나타남).

Services › Private Cloud › Plans & pricing을 엽니다. 각 플랜에 대해 Edit을 클릭하고 VND price per month, On sale, 그리고 네트워크 속도가 플랜의 Mbps와 일치하는 CloudStack tier offering UUID를 설정합니다. 행에는 최대 사용 시의 비용과 수익이 표시되므로 비용 대비 손실이 발생하는 플랜을 확인할 수 있습니다.

Sell Private Cloud 스위치를 켭니다. 먼저 테스트하려면 테스트 계정 ID를 Beta accounts에 추가하세요. 해당 계정은 판매 스위치가 꺼져 있어도 서비스를 이용할 수 있습니다.
확인
- Kubernetes: 상태 카드에
kubernetesserviceenabled: true, 양호한 엔드포인트 확인 및 활성화된 버전이 표시됩니다. 고객 권한으로 1개의 워커가 있는 테스트 클러스터를 생성하면 실행 중 상태가 되어야 하고kubectl get nodes에 준비 완료 상태가 표시되어야 합니다. 생성 후 삭제하면 네트워크와 IP가 풀로 반환됩니다. - Private Cloud: 테스트 고객으로서 가장 작은 요금제로 VPC를 생성합니다. VPC가 활성 상태로 표시되고, 티어에 서브넷이 할당되며, 티어의 VM이 VPC 라우터를 통해 인터넷에 접속할 수 있고, Change plan으로 더 큰 요금제로 변경하면 연결 끊김 없이 약 20초 내에 적용됩니다.
제한 사항 및 참고 사항
- Kubernetes: 워커는 VM 요금제 가격으로 과금되며 VM 제한에서 VM으로 산정됩니다. 10개 노드라는 CKS 제한으로 인해 클러스터에는 최대 9개의 워커를 둘 수 있습니다.
- Kubernetes: 클러스터의 컨트롤 플레인, 라우터 및 공인 IP는 고객에게 무료로 제공되며, 비용은 귀하가 부담합니다.
- Private Cloud: 모든 요금제는 unmetered입니다. 양식의 가격은 월별 베트남 동 단위이며, 비용 열은 귀하의 가격이 아닌 참고 가격을 사용하므로 자체 금액을 사용해야 합니다.
- 잠긴 VPC는 1 Mbps로 제한되며, 과금되지 않고 자동으로 삭제되지 않습니다.
- Private Cloud는 이중화된 쌍이 아닌 VPC당 하나의 라우터를 사용합니다. 호스트에 장애가 발생하면 CloudStack이 몇 분 안에 재구축합니다.
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와 네트워크 레이트를 확인하세요. |