이 항목에서는 Tanzu CLI를 사용하여 워크로드 클러스터를 배포할 때 워크로드 클러스터를 구성하는 방법을 설명합니다.
워크로드 클러스터를 구성하는 방법은 아래 섹션에 설명된 대로 클러스터 유형에 따라 다릅니다. 워크로드 클러스터 유형을 참조하십시오.
클래스 기반 클러스터는 Cluster
개체에 Kubernetes 스타일 개체 규격을 사용합니다.
ClusterBootstrap
및 참조하는 개체에 규격이 필요할 수도 있습니다.TKC 클러스터는 CLUSTER_NAME
과 같은 대문자 밑줄 변수를 설정하는 플랫 구조의 클러스터 구성 파일을 사용합니다.
두 가지 유형의 클러스터 모두에 대해 새 클러스터를 생성하거나 클러스터의 개체 규격에 전달하여 kubectl apply
를 실행하여 기존 클러스터의 구성을 수정할 수도 있습니다.
다른 Kubernetes 개체와 마찬가지로 개체 규격을 생성하고 편집하여 클래스 기반 워크로드 클러스터를 구성합니다. 클러스터 개체의 경우 다음과 같습니다.
Cluster
개체: 클러스터 토폴로지와 같은 대부분의 클러스터 옵션을 구성합니다. 실행 중인 클러스터의 구성을 변경하기 위해 이 개체 규격을 변경하고 다시 적용할 수 있습니다.ClusterBootstrap
개체: CNI(컨테이너 네트워크 인터페이스) 및 CSI(컨테이너 스토리지 인터페이스)와 같이 클러스터를 처음 생성할 때만 적용되고 실행 중인 클러스터에서 재구성할 수 없는 기본값이 아닌 옵션을 구성합니다. 자세한 내용은 일회성 인프라 설정 구성을 참조하십시오.vSphere 8 설명서에는 클래스 기반 클러스터의 개체 규격 예시가 포함되어 있습니다.
Cluster
개체에서 구성할 수 있는 최상위 설정은 다음과 같이 구성됩니다. 구성할 수 있는 variables
는 ClusterClass 토폴로지 변수를 참조하십시오.
clusterNetwork
apiServerPort
services
CIDRBlocks
pods
CIDRBlocks
serviceDomain
controlPlaneEndpoint
host
port
topology
class
version
rolloutAfter
controlPlane
metadata
annotations
replicas
nodeDrainTimeout
nodeDeletionTimeout
machineHealthCheck
maxUnhealthy
nodeStartupTimeout
unhealthyConditions
workers
machineDeployments
metadata
class
- class: node-pool
name
failureDomain
replicas
nodeDrainTimeout
nodeDeletionTimeout
machineHealthCheck
maxUnhealthy
nodeStartupTimeout
unhealthyConditions
variables
name
value
variables
name
value
이러한 필드는 Tanzu Framework 저장소 cluster_types.go 의 Cluster
개체 유형 규격에 설정됩니다.
json:
설정은 필드가 선택 사항인지 여부를 나타냅니다. 선택적 필드에는 omitempty
설정이 있습니다.Topology
구조체에는 유형 규격에 *Workers
가 포함되므로 workers
개체 규격의 topology
아래에 들여쓰기됩니다.node-pool
클래스 및 variables
옵션은 클러스터의 spec.topology.class
값으로 설정된 Cluster
개체의 클러스터 클래스에 정의됩니다. 기본적으로 TKG 2에서 이 개체는 워크로드 클러스터 유형에 설명된 TanzuKubernetesCluster
와는 다른 tanzukubernetescluster
라는 ClusterClass
개체입니다.
구성 가능한 variables
에는 vmClass
, storageClass
, proxy
, nodeLabels
, extensionCert
및 기타 여러 가지 변수가 포함되며, ClusterClass 토폴로지 변수를 참조하십시오. 이러한 변수는 클러스터 개체의 기초가 되는 개체(예: KubeAdmConfig
및 Machine
개체)의 설정을 구성하고 재정의합니다.
TKG 2 워크로드 클러스터의 기본 ClusterClass
인 tanzukubernetescluster
클래스는 topology.variables
및 topology.workers.machineDeployments.variables
에 설정된 다음 변수를 지원합니다. 노드 풀과 같은 시스템 배포와 관련된 변수 설정은 글로벌 설정을 재정의합니다.
이러한 변수는 vmClass
및 storageClass
개체에 설정된 proxy
, KubeAdmConfig
, Machine
설정과 같이 클러스터 개체의 기본이 되는 개체의 설정을 구성하고 재정의합니다. 이를 통해 사용자는 하위 수준 개체 규격을 편집하지 않고도 Cluster
개체 규격 내에서 클러스터를 완전히 구성할 수 있습니다.
clusterEncryptionConfigYaml
controlPlaneVolumes
defaultRegistrySecret
defaultStorageClass
extensionCert
nodePoolLabels
nodePoolTaints
nodePoolVolumes
ntp
proxy
storageClass
storageClasses
TKR_DATA
trust
user
vmClass
vSphere 8 설명서의 다음 항목에서는 storageClass
및 vmClass
설정을 변경하여 실행 중인 클러스터를 재구성하는 방법을 설명합니다.
구현 참고: ClusterClass
개체 규격에서 variables
및 patches
블록은 변수와 변수의 처리 방식을 정의합니다.
variables
정의는 기본 개체 설정에 직접 해당합니다.patches
정의는 Sprig 함수 및 jsonPatch 규칙을 적용하여 구성 설정을 보다 복잡한 변경 집합으로 변환합니다.Cluster
개체 규격에서 가장 일반적인 클러스터 설정을 구성할 수 있지만 일부 클러스터 구성 요소는 노드의 기반이 되는 TKr(Tanzu Kubernetes 릴리스)에서 가져옵니다. 예를 들어, TKr은 클러스터가 사용하는 CNI(Container Network Interface), CSI(Container Storage Interface) 및 Pinniped 버전을 지정합니다.
ClusterBootstrap
개체에 의해 클러스터 생성 시 적용되고 실행 중인 클러스터에서는 변경할 수 없는 이러한 인프라 수준 옵션입니다. 클러스터를 생성하기 전에 이러한 옵션을 구성하는 일반적인 절차는 다음과 동일합니다.
ClusterBootstrap
개체 및 참조하는 모든 사용자 지정 개체(예: CalicoConfig
개체)의 개체 규격을 생성합니다.
Cluster
개체 자체의 개체 규격을 생성합니다.
모든 개체 규격의 metadata
는 생성하려는 클러스터의 이름 및 네임스페이스를 포함합니다. 예:
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: ClusterBootstrap
metadata:
name: MY-CLUSTER
namespace: MY-NAMESPACE
사용자 지정에는 주석과 같은 추가 메타데이터가 필요할 수 있습니다.
Cluster
정의를 포함한 모든 개체 규격을 단일 파일로 연결합니다. 규격을 3개의 대시(---
)로 구성된 줄로 구분합니다.
개체 규격을 kubectl apply
-f
옵션으로 전달합니다. 예를 들면 다음과 같습니다.
kubectl config use-context SUPERVISOR-IP
kubectl apply -f my-custom-cluster-objects.yaml
여기서 SUPERVISOR-IP
는 Supervisor의 컨텍스트입니다. vSphere with Tanzu 서비스 및 워크로드에서 Supervisor 컨텍스트 가져오기 및 사용을 참조하십시오.
대체 방법: 마지막 두 단계 대신 Cluster
개체를 제외한 모든 개체 규격에 kubectl apply -f
를 실행한 다음 Cluster
개체 규격을 사용하여 tanzu cluster create -f
를 실행할 수 있습니다.
이 절차의 특정 예를 보려면 클러스터의 CNI를 Calico로 설정하는 기본이 아닌 CNI를 사용하여 클러스터 생성을 참조하십시오.
TKC 기반 워크로드 클러스터를 생성하려면 변수를 설정하여 스토리지 클래스, VM 클래스, 서비스 도메인, 네임스페이스, 클러스터를 생성하는 데 필요한 기타 값을 정의합니다.
다음 표에는 TKC 기반 클러스터의 구성 파일에 포함할 수 있는 변수가 나열되어 있습니다. 또는 아래에 설명된 대로 로컬 환경 변수로 설정할 수 있습니다.
필수 변수 | ||
---|---|---|
변수 | 값 유형 또는 예 | 설명 |
INFRASTRUCTURE_PROVIDER |
tkg-service-vsphere |
항상 vSphere with Tanzu에서 TanzuKubernetesCluster 개체에 대한 tkg-service-vsphere . |
CLUSTER_PLAN |
dev , prod 또는 사용자 지정 계획 |
노드 수를 설정합니다. |
CLUSTER_CIDR |
CIDR 범위 | 포드에 사용할 CIDR 범위. 권장 범위는 100.96.0.0/11 입니다. 권장 범위를 사용할 수 없는 경우에만 이 값을 변경합니다. |
SERVICE_CIDR |
Kubernetes 서비스에 사용할 CIDR 범위. 권장 범위는 100.64.0.0/13 입니다. 권장 범위를 사용할 수 없는 경우에만 이 값을 변경합니다. |
|
SERVICE_DOMAIN |
도메인 | 예: DNS가 없는 경우 my.example.com 또는 cluster.local . 노드에 FQDN을 할당하려는 경우 DNS 조회가 필요합니다. |
CONTROL_PLANE_VM_CLASS |
vSphere with Tanzu 표준 VM 클래스(예: guaranteed-large ).vSphere with Tanzu 설명서에서 Supervisor에서 TKG 클러스터와 함께 가상 시스템 클래스 사용을 참조하십시오. |
제어부 노드의 VM 클래스 |
WORKER_VM_CLASS |
Worker 노드의 VM 클래스 | |
선택적 변수 | ||
변수 | 값 유형 또는 예 | 설명 |
CLUSTER_NAME |
문자열 | CLUSTER-NAME 인수에 의해 재정의되어 tanzu cluster create 로 전달됩니다.이 이름은 RFC 952에 설명된 DNS 호스트 이름 요구 사항을 준수하고 RFC 1123에 수정된 DNS 호스트 이름 요구 사항을 준수해야 하며 42자 이하여야 합니다. |
NAMESPACE |
네임스페이스. 기본값은 default 입니다. |
클러스터를 배포할 네임스페이스입니다. Supervisor의 네임스페이스를 찾으려면 kubectl get namespaces 를 실행합니다. |
CNI |
antrea 또는 calico . 기본값: antrea |
호스팅된 워크로드에 대한 컨테이너 네트워킹 인터페이스(Antrea 또는 Calico). |
CONTROL_PLANE_MACHINE_COUNT |
정수. CONTROL_PLANE_MACHINE_COUNT 는 홀수여야 합니다.기본값은 CLUSTER_PLAN 에서 설정된 대로 dev 의 경우 1 , prod 의 경우 3 입니다. |
dev 또는 prod 계획 기본값보다 더 많은 제어부 노드가 있는 워크로드 클러스터를 배포합니다. |
WORKER_MACHINE_COUNT |
Worker 노드가 dev 또는 prod 계획 기본값보다 많은 워크로드 클러스터를 배포합니다. |
|
STORAGE_CLASSES |
빈 문자열 ““ 를 사용하면 클러스터가 네임스페이스의 모든 스토리지 클래스를 사용하거나 kubectl get storageclasses 의 쉼표로 구분된 값 문자열을 사용할 수 있습니다(예: “SC-1,SC-2,SC-3” |
노드 사용자 지정에 사용할 수 있는 스토리지 클래스 |
DEFAULT_STORAGE_CLASS |
위에서와 같이 기본값이 없는 경우 빈 문자열 ”” 또는 CLI의 값. |
제어부 또는 Worker의 기본 스토리지 클래스 |
CONTROL_PLANE_STORAGE_CLASS |
kubectl get storageclasses 에서 반환된 값 |
제어부 노드의 기본 스토리지 클래스 |
WORKER_STORAGE_CLASS |
Worker 노드의 기본 스토리지 클래스 | |
NODE_POOL_0_NAME |
문자열 | 노드 풀 이름, 레이블, taint. TanzuKubernetesCluster 는 하나의 노드 풀만 있을 수 있습니다. |
NODE_POOL_0_LABELS |
문자열의 JSON 목록(예:
|
|
NODE_POOL_0_TAINTS |
키-값 쌍 문자열의 JSON 목록(예: [{“key1”: “value1”}, {“key2”: “value2”}] |
다음 중 하나를 수행하여 위의 변수를 설정할 수 있습니다.
tanzu
CLI --file
옵션으로 전달된 클러스터 구성 파일에 포함합니다. 예:
CONTROL_PLANE_VM_CLASS: guaranteed-large
명령줄에서 export
(Linux 및 macOS) 또는 SET
(Windows)을 실행하여 로컬 환경 변수로 설정합니다. 예:
export CONTROL_PLANE_VM_CLASS=guaranteed-large
참고: 워크로드 클러스터의 고유한 프록시 설정을 구성하려는 경우 TKG_HTTP_PROXY
, TKG_HTTPS_PROXY
, NO_PROXY
를 환경 변수로 설정한 다음 Tanzu CLI를 사용하여 클러스터를 생성할 수 있습니다. 이러한 변수는 vSphere with Tanzu의 기존 프록시 구성보다 우선합니다.
Tanzu CLI는 구성 파일에 제공하는 설정에 따라 워크로드 클러스터의 개별 노드를 생성합니다. 모든 노드 VM이 동일한 크기를 가지도록 구성하거나 제어부 및 Worker 노드에 다른 크기를 설정할 수 있습니다.
Tanzu CLI는 클러스터 노드에 대해 다음과 같은 미리 정의된 구성을 제공합니다.
small
: CPU 2개, 4GB 메모리, 20GB 디스크medium
: CPU 2개, 8 GB 메모리, 40 GB 디스크large
: CPU 4개, 16 GB 메모리, 40 GB 디스크extra-large
: CPU 8개, 32 GB 메모리, 80 GB 디스크모든 제어부 및 Worker 노드 VM의 크기가 동일한 클러스터를 생성하려면 SIZE
변수를 지정합니다. SIZE
변수를 설정하면 모든 노드가 사용자가 설정한 구성으로 생성됩니다.
SIZE: "large"
제어부 및 Worker 노드 VM의 크기가 다른 클러스터를 생성하려면 CONTROLPLANE_SIZE
및 WORKER_SIZE
옵션을 지정합니다.
CONTROLPLANE_SIZE: "medium"
WORKER_SIZE: "extra-large"
CONTROLPLANE_SIZE
및 WORKER_SIZE
옵션을 SIZE
옵션과 결합할 수 있습니다. 예를 들어 SIZE: "large"
를 WORKER_SIZE: "extra-large"
와 함께 지정하면 제어부 노드는 large
로 설정되고 Worker 노드는 extra-large
로 설정됩니다.
SIZE: "large"
WORKER_SIZE: "extra-large"
클러스터 복잡성 및 예상 요구량에 따라 워크로드 클러스터 노드의 크기를 구성합니다. 위의 노드 크기에 정의된 대로 small
, medium
, large
또는 extra-large
로 설정할 수 있습니다.
샘플 애플리케이션을 실행하는 단일 Worker 워크로드 클러스터의 경우 다음과 같은 최소 VM 크기를 사용합니다.
small
medium
다음 섹션에서는 구성 변수를 사용하여 TKC 워크로드 클러스터를 구성하는 일반적인 예를 보여 줍니다.
클러스터 구성 파일에서 CLUSTER_PLAN
을 dev
또는 prod
로 설정하면 클러스터의 노드 수가 설정됩니다.
dev
계획: 제어부 노드 1개와 Worker 노드 1개.prod
계획: 제어부 노드 3개와 Worker 노드 3개.예를 들어 클러스터 구성 파일에서 다음을 수행합니다.
CLUSTER_PLAN: prod
기본적으로 정의되는 dev
및 prod
계획보다 더 많은 제어부 노드가 있는 워크로드 클러스터를 배포하려면 클러스터 구성 파일에 CONTROL_PLANE_MACHINE_COUNT
변수를 지정합니다. CONTROL_PLANE_MACHINE_COUNT
에 지정하는 제어부 노드 수는 균등하지 않아야 합니다.
CONTROL_PLANE_MACHINE_COUNT: 5
WORKER_MACHINE_COUNT
변수에서 클러스터의 Worker 노드 수를 지정합니다. 예:
WORKER_MACHINE_COUNT: 10
Tanzu Kubernetes Grid 인스턴스에서 네임스페이스를 생성한 경우 NAMESPACE
변수를 지정하여 워크로드 클러스터를 해당 네임스페이스에 배포할 수 있습니다. NAMESPACE
변수를 지정하지 않으면 Tanzu Kubernetes Grid는 클러스터를 default
네임스페이스에 배치합니다. 명령을 실행하기 전에 NAMESPACE
변수에서 식별하는 모든 네임스페이스가 있어야 합니다.
전용 네임스페이스에 서로 다른 유형의 클러스터를 생성할 수 있습니다. 예:
NAMESPACE: production
참고: 모든 네임스페이스의 모든 워크로드 클러스터에 고유한 이름을 제공해야 합니다. 다른 네임스페이스에서 사용 중인 클러스터 이름을 지정하면 클러스터 배포가 오류와 함께 실패합니다.