Quick provisioning using k8sClusterDynamic #1913
Replies: 2 comments
-
☸️ Kubernetes 프로비저닝 테스트 및 예시 (CB-Tumblebug v0.11.1)
주의: CB-Tumblebug v0.11.8+ 에서는 필드명에 변경이 있으므로, 하기 예시를 그대로 실행하면 안됨.
🟫 AWS
k8sClusterDynamic{
"commonImage": "default",
"commonSpec": "aws+ap-northeast-2+t3a.xlarge",
"connectionName": "aws-ap-northeast-2",
"name": "k8scluster01",
"nodeGroupName": "k8sng01"
} k8sNodeGroupDynamic{
"commonImage": "default",
"commonSpec": "aws+ap-northeast-2+t3a.xlarge",
"name": "k8sng01"
}
🟨 Alibaba Cloud/searchImage (Alibaba Kubernetes 이미지 검색){
"isKubernetesImage": true,
"osType": "Alibaba Cloud Linux",
"osArchitecture": "x86_64",
"providerName": "alibaba",
"regionName": "ap-northeast-2"
} k8sClusterDynamic{
"commonImage": "aliyun_3_x64_20G_container_optimized_20250117.vhd",
"commonSpec": "alibaba+ap-northeast-2+ecs.g6e.xlarge",
"connectionName": "alibaba-ap-northeast-2",
"name": "k8scluster01",
"nodeGroupName": "k8sng01"
} k8sNodeGroupDynamic{
"commonImage": "aliyun_3_x64_20G_container_optimized_20250117.vhd",
"commonSpec": "alibaba+ap-northeast-2+ecs.g6e.xlarge",
"RootDiskType": "cloud_efficiency",
"RootDiskSize": "40",
"name": "k8sng02"
} 🟦 Azure
k8sClusterDynamic{
"commonImage": "default",
"commonSpec": "azure+koreacentral+standard_b4ms",
"connectionName": "azure-koreacentral",
"name": "k8scluster01",
"nodeGroupName": "k8sng01"
} k8sNodeGroupDynamic{
"commonImage": "default",
"commonSpec": "azure+koreacentral+standard_b4ms",
"name": "k8sng02"
} 🟩 GCP
k8sClusterDynamic{
"commonImage": "default",
"commonSpec": "gcp+asia-east1+e2-standard-4",
"connectionName": "gcp-asia-east1",
"name": "k8scluster01",
"nodeGroupName": "k8sng01"
} k8sNodeGroupDynamic{
"commonImage": "default",
"commonSpec": "gcp+asia-east1+e2-standard-4",
"name": "k8sng02"
} 🟧 NHN Cloud
/searchImage 예시 (컨테이너 최적화 이미지 검색){
"isKubernetesImage": true,
"osType": "ubuntu 22.04",
"osArchitecture": "x86_64",
"providerName": "nhncloud",
"regionName": "kr1",
"detailSearchKeys": [ "Container (2025.02.25)" ]
} k8sClusterDynamic{
"commonImage": "efe7f58f-5a32-4905-aa3b-e7839bd191d7",
"commonSpec": "nhncloud+kr1+m2.c4m8",
"connectionName": "nhncloud-kr1",
"name": "k8scluster01",
"nodeGroupName": "k8sng01"
} k8sNodeGroupDynamic{
"commonImage": "efe7f58f-5a32-4905-aa3b-e7839bd191d7",
"commonSpec": "nhncloud+kr1+m2.c4m8",
"name": "k8sng02"
}
🟥 Tencent Cloud
/searchImage 예시{
"osType": "ubuntu 20.04",
"osArchitecture": "x86_64",
"providerName": "tencent",
"regionName": "ap-seoul"
} k8sClusterDynamic{
"commonImage": "img-22trbn9x",
"commonSpec": "tencent+ap-seoul+s5.medium4",
"connectionName": "tencent-ap-seoul",
"name": "k8scluster01",
"nodeGroupName": "k8sng01"
} k8sNodeGroupDynamic{
"commonImage": "img-22trbn9x",
"commonSpec": "tencent+ap-seoul+s5.medium4",
"name": "k8sng01"
}
🟪 NCP (VPC)
💬 공통 참고사항:
|
Beta Was this translation helpful? Give feedback.
-
☸️ (WIP) Kubernetes 프로비저닝 테스트 및 예시 (CB-Tumblebug v0.11.9+)
Provider에 따라서, K8s 클러스터 생성시 노드그룹이 함께 생성되거나, 노드그룹을 별도로 추가해야 하는 경우가 나뉜다.
주의: CB-Tumblebug v0.11.8+ 에서는 필드명에 변경이 있으므로 주의
주의: CB-Tumblebug v0.11.8+ 에서는 CSP 명칭 변경, ConnectionName 명칭 변경 등이 있으니 주의 🟫 AWS
k8sClusterDynamic{
"imageId": "default",
"specId": "aws+ap-northeast-2+t3a.xlarge",
"name": "k8scluster01",
"nodeGroupName": "k8sng01"
} 실제로는 클러스터만 생성되고, 노드그룹은 자동 생성되지 않으며, 클러스터의 status가 k8sNodeGroupDynamic{
"imageId": "default",
"specId": "aws+ap-northeast-2+t3a.xlarge",
"name": "k8sng01"
}
🟨 Alibaba Cloud/searchImage (Alibaba Kubernetes 이미지 검색){
"isKubernetesImage": true,
"osType": "Alibaba Cloud Linux",
"osArchitecture": "x86_64",
"providerName": "alibaba",
"regionName": "ap-northeast-2"
} k8sClusterDynamic{
"imageId": "aliyun_3_x64_20G_container_optimized_20250117.vhd",
"specId": "alibaba+ap-northeast-2+ecs.g6e.xlarge",
"name": "k8scluster01",
"nodeGroupName": "k8sng01"
} 실제로는 클러스터만 생성되고, 노드그룹은 자동 생성되지 않으며, 클러스터의 status가 k8sNodeGroupDynamic{
"imageId": "aliyun_3_x64_20G_container_optimized_20250117.vhd",
"specId": "alibaba+ap-northeast-2+ecs.g6e.xlarge",
"RootDiskType": "cloud_efficiency",
"RootDiskSize": "40",
"name": "k8sng02"
} 🟦 Azure
k8sClusterDynamic{
"imageId": "default",
"specId": "azure+koreacentral+standard_b4ms",
"name": "k8scluster01",
"nodeGroupName": "k8sng01"
} k8sNodeGroupDynamic{
"imageId": "default",
"specId": "azure+koreacentral+standard_b4ms",
"name": "k8sng02"
} 🟩 GCP
k8sClusterDynamic{
"imageId": "default",
"specId": "gcp+asia-east1+e2-standard-4",
"name": "k8scluster01",
"nodeGroupName": "k8sng01"
} k8sNodeGroupDynamic{
"imageId": "default",
"specId": "gcp+asia-east1+e2-standard-4",
"name": "k8sng02"
} 🟧 NHN Cloud
/searchImage 예시 (컨테이너 최적화 이미지 검색){
"isKubernetesImage": true,
"osType": "ubuntu 22.04",
"osArchitecture": "x86_64",
"providerName": "nhn",
"regionName": "kr1",
"detailSearchKeys": [ "Container (2025.02.25)" ]
} k8sClusterDynamic{
"imageId": "efe7f58f-5a32-4905-aa3b-e7839bd191d7",
"specId": "nhn+kr1+m2.c4m8",
"connectionName": "nhn-kr1",
"name": "k8scluster01",
"nodeGroupName": "k8sng01"
} k8sNodeGroupDynamic{
"imageId": "efe7f58f-5a32-4905-aa3b-e7839bd191d7",
"specId": "nhn+kr1+m2.c4m8",
"name": "k8sng02"
}
🟥 Tencent Cloud
/searchImage 예시{
"osType": "ubuntu 20.04",
"osArchitecture": "x86_64",
"providerName": "tencent",
"regionName": "ap-seoul"
} k8sClusterDynamic{
"imageId": "img-22trbn9x",
"specId": "tencent+ap-seoul+s5.medium4",
"name": "k8scluster01",
"nodeGroupName": "k8sng01"
} 실제로는 클러스터만 생성되고, 노드그룹은 자동 생성되지 않으며, 클러스터의 status가 k8sNodeGroupDynamic{
"imageId": "img-22trbn9x",
"specId": "tencent+ap-seoul+s5.medium4",
"name": "k8sng01"
}
🟪 NCP (VPC)
💬 공통 참고사항:
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Quick provisioning using k8sClusterDynamic
1) CB-TB의 K8sCluster 동적 생성 방법
POST /ns/{nsId}/k8sClusterDynamic를 활용하면, 별도의 작업 없이 빠르게 클라우드 상에 쿠버네티스 클러스터 인프라의 생성이 가능하다.
specId 는
provider
+region
+cspSpecName
형태로 구성되며init.sh
를 통해서 이미 오브젝트로 등록된 스펙 및 이미지들 중 InfraType 값에 "k8s"가 포함된 경우 적용 가능하다. imageId 는cspImageName
형태이다.일부 CSP(Azure, IBM 등)의 경우 워커노드의 이미지 지정이 불가능하기 때문에 imageId 의 값을 "default" 또는 ""(blank)로 설정해야 한다.
version은 값을 지정하지 않으면 k8sClusterinfo.yaml에 기재된 가장 최신 버전을 선정한다.
K8sCluster Dynamic 을 통해서 K8sCluster를 생성하면, 내부적으로 공용
Network
,SG
,SSHKey
등이 생성됨 (내부적으로는 POST/ns/{nsId}/sharedResource를 활용)
commonSpec ID 획득 방법
워커노드들의 Spec 지정을 위해 commonSpec ID를 조회가 필요하며, 이를 위해 POST /k8sClusterRecommendNode를 활용한다.
k8sClusterRecommendNode를 통해서 워커노드의 Spec 을 조회하는 방법은 mciRecommendVM 가이드와 동일한 방식으로 사용 가능하며, 차이점은 결과값에 InfraType 값에 "k8s"가 포함된 항목만 포함되는 점이 다르다.
예를 들어,
로 요청하는 경우, 아래와 같이, 필터링 및 우선순위 처리된 리스트를 확인할 수 있다.
여기서, 원하는 spec의 ID를 선정하여 k8sClusterDynamic 요청문에 활용하면 된다.
imageId ID 획득 방법
예를 들어,
를 입력하여 요청한 경우, 아래와 같은 응답을 받을 수 있으며,
응답
details
image
항목에 가용한 image 리스트가 리턴되므로, 이 중에서 선정하여cspImageName
값을commonImage
값으로 활용하면 된다.commonImage
는provider
+region
+keyword
형태의 ID값 요청 및Ubuntu22.04
와 같은 형태로guestOS
의 명칭으로 지정하는 것은 더 이상 지원하지 않는다. (지정되는 이미지의 명확성을 위해서)K8sCluster dynamic 생성 결과 (예시)
요청
결과
details
2) K8sNodeGroup 동적 생성 방법
POST /ns/{nsId}/k8sNodeGroupDynamic를 활용하면, 상기 생성한 K8sCluster를 대상으로 손쉽게 노드그룹을 생성/추가할 수 있다.
3) K8sCluster 생성시 노드그룹 동시 생성 유무에 따른 주의사항
K8sCluster 생성시 CSP에 따라 노드그룹을 함께 생성하기도 하고 그렇지 않기도 하다. 자세한 사항을 PMKS 개발 현황의 NodeGroup 추가 방법 탭을 참고하면 된다.
노드그룹을 함께 생성하지 않는 CSP의 경우 POST /ns/{nsId}/k8sCluster/{k8sClusterId}/k8sNodeGroup를 통해 노드그룹을 생성해야 정상적으로 K8sCluster를 활용할 수 있다.
4) K8sCluster 상태 조회, 노드그룹(K8sNodeGroup) 추가/삭제, K8sCluster 삭제
5) K8sCluster Dynamic에 의해서 자동 생성된 자원 정리
Network
,SG
,SSHKey
등이 생성된다.DELETE /ns/{nsId}/sharedResources 를 사용하여, 해당 자원들을 정리하는 것이 필요하다.
Beta Was this translation helpful? Give feedback.
All reactions