Tanzu Kubernetes Grid 서비스 API는 Tanzu Kubernetes 클러스터를 사용자 지정하기 지능형 기본값과 다양한 옵션을 제공합니다. 요구 사항을 충족하는 다양한 구성 및 사용자 지정으로 다양한 유형의 클러스터를 프로비저닝하려면 다음 예를 참조하십시오.
Tanzu Kubernetes 클러스터 프로비저닝을 위한 최소 YAML
다음 예제 YAML은 Tanzu Kubernetes Grid 서비스를 호출하고 모든 기본 설정을 사용하는 Tanzu Kubernetes 클러스터를 프로비저닝하는 데 필요한 최소 구성입니다.
최소 예제 YAML의 특징은 다음과 같습니다.
- v1.19로 나열된 Tanzu Kubernetes 릴리스 버전은 해당 부 버전(예:
v1.19.7+vmware.1-tkg.1.xxxxxx
)과 일치하는 최신 배포판으로 확인됩니다. 업데이트를 위한 Tanzu Kubernetes 클러스터 호환성 확인의 내용을 참조하십시오. - VM 클래스
best-effort-<size>
에 예약이 없습니다. 자세한 내용은 Tanzu Kubernetes 클러스터에 대한 가상 시스템 클래스의 내용을 참조하십시오. - 클러스터에는 컨테이너용 영구 스토리지가 포함되어 있지 않습니다. 필요한 경우
spec.settings.storage
에서 설정합니다. 아래의 스토리지 예제를 참조하십시오. - Helm과 같은 일부 워크로드에는
spec.settings.storage.defaultClass
가 필요할 수 있습니다. 아래의 스토리지 예제를 참조하십시오. spec.settings.network
섹션이 지정되지 않았습니다. 즉, 클러스터에 다음과 같은 기본 네트워크 설정이 사용됩니다.- 기본 CNI:
antrea
- 기본 포드 CIDR:
192.168.0.0/16
- 기본 서비스 CIDR:
10.96.0.0/12
- 기본 서비스 도메인:
cluster.local
참고: 포드의 기본 IP 범위는192.168.0.0/16
입니다. 이 서브넷을 이미 사용 중이면 다른 CIDR 범위를 지정해야 합니다. 아래의 사용자 지정 네트워크 예를 참조하십시오.- 기본 CNI:
apiVersion: run.tanzu.vmware.com/v1alpha1 #TKGS API endpoint kind: TanzuKubernetesCluster #required parameter metadata: name: tkgs-cluster-1 #cluster name, user defined namespace: tgks-cluster-ns #vsphere namespace spec: distribution: version: v1.20 #Resolves to latest TKR 1.20 topology: controlPlane: count: 1 #number of control plane nodes class: best-effort-medium #vmclass for control plane nodes storageClass: vwt-storage-policy #storageclass for control plane workers: count: 3 #number of worker nodes class: best-effort-medium #vmclass for worker nodes storageClass: vwt-storage-policy #storageclass for worker nodes
별도의 디스크 및 스토리지 매개 변수가 있는 클러스터
다음 예제 YAML은 클러스터 제어부 및 작업자 노드에 대해 별도의 디스크 및 스토리지 매개 변수를 사용하여 클러스터를 프로비저닝하는 방법을 보여줍니다.
변동률이 높은 데이터에 대해 분리 디스크 및 스토리지 매개 변수를 사용하면 무엇보다 연결된 클론의 사용과 관련된 읽기-쓰기 오버헤드를 최소화하는 데 도움이 됩니다. 두 가지 주요 사용 사례는 다음과 같습니다.
- etcd 데이터베이스에 대한 제어부 노드의 스토리지 성능을 사용자 지정
- 작업자 노드의 컨테이너 이미지에 대한 디스크 크기를 사용자 지정
이 예에는 다음과 같은 특징이 있습니다.
spec.topology.controlPlane.volumes
설정은 etcd 데이터베이스에 대해 별도의 볼륨을 지정합니다.spec.topology.workers.volumes
설정은 컨테이너 이미지용에 대해 별도의 볼륨을 지정합니다.- 컨테이너 이미지에 대한
mountPath: /var/lib/containerd
는 Tanzu Kubernetes 릴리스 1.17 이상에서 지원됩니다.
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-5 namespace: tgks-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: count: 3 class: best-effort-medium storageClass: vwt-storage-policy volumes: - name: etcd mountPath: /var/lib/etcd capacity: storage: 4Gi workers: count: 3 class: best-effort-medium storageClass: vwt-storage-policy volumes: - name: containerd mountPath: /var/lib/containerd capacity: storage: 16Gi
사용자 지정 Antrea 네트워크가 있는 클러스터
다음 YAML은 Antrea CNI에 대한 사용자 지정 네트워크 범위를 사용하여
Tanzu Kubernetes 클러스터를 프로비저닝하는 방법을 보여줍니다.
- 사용자 지정 네트워크 설정이 적용되기 때문에 기본 Antrea CNI를 사용하는 경우에도
cni.name
매개 변수가 필요합니다.- CNI 이름:
antrea
- 사용자 지정 포드 CIDR:
193.0.2.0/16
- 사용자 지정 서비스 CIDR:
195.51.100.0/12
- 사용자 지정 서비스 도메인:
managedcluster.local
- CNI 이름:
- 사용자 지정 CIDR 블록은 감독자 클러스터와 겹칠 수 없습니다. 자세한 내용은 Tanzu Kubernetes Grid 서비스 v1alpha1 API를 사용하는 Tanzu Kubernetes 클러스터에 대한 구성 매개 변수의 내용을 참조하십시오.
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkg-cluster-3-antrea namespace: tkgs-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: class: guaranteed-medium count: 3 storageClass: vwt-storage-policy workers: class: guaranteed-medium count: 5 storageClass: vwt-storage-policy settings: network: cni: name: antrea #Use Antrea CNI pods: cidrBlocks: - 193.0.2.0/16 #Must not overlap with SVC services: cidrBlocks: - 195.51.100.0/12 #Must not overlap with SVC serviceDomain: managedcluster.local
사용자 지정 Calico 네트워크가 있는 클러스터
다음 YAML은 사용자 지정 Calico 네트워크를 사용하여
Tanzu Kubernetes 클러스터를 프로비저닝하는 방법을 보여줍니다.
- Calico는 기본 CNI가 아니므로 매니페스트에서 명시적으로 이름이 지정됩니다. 서비스 수준에서 기본 CNI를 변경하려면 Tanzu Kubernetes Grid 서비스 v1alpha1 API 구성 예시 항목을 참조하십시오.
- CNI 이름:
calico
- 사용자 지정 포드 CIDR:
198.51.100.0/12
- 사용자 지정 서비스 CIDR:
192.0.2.0/16
- 사용자 지정 서비스 도메인:
managedcluster.local
- CNI 이름:
- 네트워크 설정은 기본값이 아닌 사용자 지정 CIDR 범위를 사용합니다. 이러한 범위는 감독자 클러스터와 겹치지 않아야 합니다. Tanzu Kubernetes Grid 서비스 v1alpha1 API를 사용하는 Tanzu Kubernetes 클러스터에 대한 구성 매개 변수의 내용을 참조하십시오.
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-2 namespace: tkgs-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: count: 3 class: guaranteed-large storageClass: vwt-storage-policy workers: count: 5 class: guaranteed-xlarge storageClass: vwt-storage-policy settings: network: cni: name: calico #Use Calico CNI for this cluster services: cidrBlocks: ["198.51.100.0/12"] #Must not overlap with SVC pods: cidrBlocks: ["192.0.2.0/16"] #Must not overlap with SVC serviceDomain: managedcluster.local
스토리지 클래스및 영구 볼륨에 대한 기본 클래스가 있는 클러스터
다음 YAML 예에서는 동적 PVC 프로비저닝을 위한 스토리지 클래스 및 기본 스토리지 클래스로 클러스터를 프로비저닝하는 방법을 보여줍니다.
spec.settings.storage.classes
설정은 클러스터의 컨테이너용 영구 스토리지에 대해 두 개의 스토리지 클래스를 지정합니다.spec.settings.storage.defaultClass
가 지정됩니다. 일부 애플리케이션에는 기본 클래스가 필요합니다. 예를 들어 Helm 또는 Kubeapps를 여러 차트에서 참조되는defaultClass
로 사용하려는 경우입니다.
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: default-storage-spec namespace: tkgs-cluster-ns spec: topology: controlPlane: count: 3 class: best-effort-medium storageClass: vwt-storage-policy workers: count: 3 class: best-effort-medium storageClass: vwt-storage-policy distribution: version: v1.20 settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: "tanzukubernetescluster.local" storage: classes: ["gold", "silver"] #Array of named PVC storage classes defaultClass: silver #Default PVC storage class
프록시 서버가 있는 클러스터
프록시 서버 구성을 클러스터 매니페스트에 적용하여 개별 Tanzu Kubernetes 클러스터에서 프록시 서버를 사용할 수 있습니다.
다음과 같은 특징을 참고하십시오.
spec.settings.network.proxy
섹션은 Tanzu Kubernetes 클러스터에 대한 HTTP(s) 프록시 구성을 지정합니다.- 두
proxy
서버 값의 구문은http://<user>:<pwd>@<ip>:<port>
입니다. localhost
및127.0.0.1
과 Tanzu Kubernetes 클러스터용 포드 및 서비스CIDR을 비롯한 특정 끝점은 자동으로 프록시되지 않습니다. 이러한 항목은noProxy
필드에 포함할 필요가 없습니다.noProxy
프록시를 사용하지 않을 CIDR 어레이를 허용합니다. 감독자 클러스터의 워크로드 네트워크에서 필요한 값을 가져옵니다. Tanzu Kubernetes Grid 서비스 v1alpha1 API를 사용하는 Tanzu Kubernetes 클러스터에 대한 구성 매개 변수에서 이미지를 참조하십시오.TkgServiceConfiguration
에 글로벌 프록시가 구성된 경우 이 프록시 정보는 클러스터의 초기 배포 후 클러스터 매니페스트로 전파됩니다. 글로벌 프록시 구성은 클러스터를 생성할 때 프록시 구성 필드가 없는 경우에만 클러스터 매니페스트에 추가됩니다. 다시 말해, 클러스터별 구성이 우선하며 글로벌 프록시 구성을 덮어씁니다.
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-with-proxy namespace: tkgs-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: count: 3 class: guaranteed-medium storageClass: vwt-storage-policy workers: count: 5 class: guaranteed-xlarge storageClass: vwt-storage-policy settings: storage: classes: ["gold", "silver"] defaultClass: silver network: cni: name: antrea pods: cidrBlocks: - 193.0.2.0/16 services: cidrBlocks: - 195.51.100.0/12 serviceDomain: managedcluster.local proxy: httpProxy: http://10.186.102.224:3128 #Proxy URL for HTTP connections httpsProxy: http://10.186.102.224:3128 #Proxy URL for HTTPS connections noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20] #SVC Pod, Egress, Ingress CIDRs
TLS용 사용자 지정 인증서가 있는 클러스터
TkgServiceConfiguration
에서
trust.additionalTrustedCAs
를 지정하는 방식과 유사하게(
Tanzu Kubernetes Grid 서비스 v1alpha1 API에 대한 구성 매개 변수 참조)
TanzuKubernetesCluster
규격의
spec.settings.network
아래
trust.additionalTrustedCAs
를 포함할 수 있습니다. 예:
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-with-custom-certs-tls namespace: tkgs-cluster-ns spec: topology: controlPlane: count: 3 class: guaranteed-medium storageClass: vwt-storage-profile workers: count: 3 class: guaranteed-large storageClass: vwt-storage-profile distribution: version: 1.20.2 settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: "managedcluster.local" trust: additionalTrustedCAs: - name: custom-selfsigned-cert-for-tkc data: | LS0aaaaaaaaaaaaaaabase64...
TkgServiceConfiguration 규격에서 글로벌 설정을 상속하거나 상속하지 않는 클러스터
참고: 다음 예제 클러스터 구성에는
vCenter Server 버전 7.0U2a 이상 및
감독자 클러스터 버전1.18.10 이상이 필요합니다.
TkgServiceConfiguration
에서 전역 설정을 상속하는
Tanzu Kubernetes 클러스터를 프로비저닝하려면 전역 설정이 지정되지 않았거나 null인 클러스터를 구성합니다.
예를 들어 proxy
설정을 상속하는 클러스터를 구성하려면 다음 방식 중 하나를 사용할 수 있습니다.
옵션1: 클러스터 규격에
proxy
설정을 포함하지 마십시오.
... settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: "tanzukubernetescluster.local"
옵션2: 규격에
proxy
설정을 포함하되 해당 값을 명시적으로
null
로 설정합니다.
settings: network: proxy: null
TkgServiceConfiguration
에서 기본값을 상속하지 않는 Tanzu Kubernetes 클러스터를 프로비저닝하려면 모든 요소가 포함되지만 값이 비어 있는 클러스터 규격을 구성합니다.
예를 들어
TkgServiceConfiguration
에 글로벌
proxy
가 구성되어 있고 글로벌
proxy
설정을 상속하지 않는 클러스터를 프로비저닝하려면 클러스터 규격에 다음 구문을 포함합니다.
... settings: network: proxy: httpProxy: "" httpsProxy: "" noProxy: null
로컬 컨텐츠 라이브러리를 사용하는 클러스터
에어갭 환경에서 Tanzu Kubernetes 클러스터를 프로비저닝하려면 로컬 컨텐츠 라이브러리에서 동기화된 가상 시스템 이미지를 사용하여 클러스터를 생성합니다.
로컬 컨텐츠 라이브러리 이미지를 사용하여 클러스터를 프로비저닝 하려면 클러스터 사양에 해당 이미지를 지정해야 합니다.
distribution.version
값의 경우, 전체 이미지 이름을 입력하거나 이미지 디렉토리의 이름 형식을 유지한 경우 Kubernetes 버전으로 단축할 수 있습니다. 정규화된 버전 번호를 사용하려면
-----
를
+
로 바꿉니다. 예를 들어 이름이
photon-3-k8s-v1.20.2---vmware.1-tkg.1.1d4f79a
인 OVA 이미지가 있으면 다음 형식을 사용할 수 있습니다.
spec: distribution: version: v1.20
spec: distribution: version: v1.20.2
spec: distribution: version: v1.20.2+vmware.1-tkg.1
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tgks-cluster-9 namespace: tkgs-cluster-ns spec: topology: controlPlane: count: 3 class: best-effort-medium storageClass: vwt-storage-policy workers: count: 3 class: best-effort-medium storageClass: vwt-storage-policy distribution: version: v1.20.2 settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"]