Tanzu Kubernetes 클러스터 규격이 v1alpha2 API 형식으로 자동 변환된 후 일반적으로 Tanzu Kubernetes 릴리스 버전을 변경하여 수행되는 Tanzu Kubernetes 클러스터의 롤링 업데이트를 수행하려면 오류를 방지하기 위해 클러스터 규격의 일부 사전 처리를 수행해야 할 수 있습니다.
클러스터 규격 자동 변환
vSphere with Tanzu 환경을 Tanzu Kubernetes Grid 서비스 v1alpha2 API로 업데이트하려면 서비스가 실행되는 감독자 클러스터를 업데이트합니다.
Tanzu Kubernetes Grid 서비스가 v1alpha2 API를 실행하면 시스템은 기존의 모든 Tanzu Kubernetes 클러스터 규격을 v1alpha1 형식에서 v1alpha2 형식으로 자동 변환합니다. 자동 변환 프로세스 중에 시스템은 각 클러스터 매니페스트에 대한 예상 필드를 생성하고 채웁니다. API 사용 중단 및 추가에는 v1alpha2 API에서 더 이상 사용되지 않는 클러스터 규격 필드와 신규 필드가 나열되어 있습니다.
매니페스트가 v1alpha2 형식으로 자동 변환된 클러스터의 Tanzu Kubernetes 릴리스 버전을 업데이트하려면 오류를 방지하기 위해 몇 가지 사전 처리를 수동으로 수행해야 합니다. 클러스터 업데이트 예에 다양한 옵션이 나열되어 있습니다.
API 사용 중단 및 추가
더 이상 사용되지 않는 설정 | 새 설정 | 주석 |
---|---|---|
|
|
TKR NAME 형식을 사용해야 합니다. 예를 참조하십시오. |
|
|
변환된 클러스터에서 spec.topology.workers 블록은 spec.topology.nodePools[0] 이 됩니다.
|
|
|
count 가 replicas 로 대체됩니다. |
|
|
class 가 vmClass 로 대체됩니다. |
해당 없음 |
|
개체를 구성하고 분류하기 위한 선택적 키-쌍 값. 생성된 노드로 레이블이 전파됨 |
해당 없음 |
|
노드를 등록할 선택적 taint. 생성된 노드로 사용자 정의 taint가 전파됨 |
TKR NAME 형식이 필수임
더 이상 사용되지 않는 spec.distribution.version
필드 외에도 Tanzu Kubernetes 릴리스 버전을 지정하기 위한 DISTRIBUTION 형식은 지원되지 않습니다. 즉, 1.21.2+vmware.1-tkg.1.ee25d55
, 1.21.2
, 1.21
문자열 형식을 사용하여 대상 릴리스를 참조할 수 없습니다.
kubectl get tanzukubernetescluster NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY TKR COMPATIBLE UPDATES AVAILABLE tkgs-cluster-1 test-cluster 3 3 v1.21.2---vmware.1-tkg.1.ee25d55 38h True True [1.21.2+vmware.1-tkg.1.ee25d55]
kubectl edit을 사용하여 클러스터 규격 업데이트
TKGS v1alpha2 API를 준수하도록 클러스터 규격을 편집해야 하는 경우 kubectl edit
메서드를 사용합니다. 이러한 유형의 업데이트에는 kubectl patch
메서드를 사용하지 마십시오. 클러스터 매니페스트 편집 방법의 내용을 참조하십시오. 편집기를 사용하여 kubectl
을 구성하려면 kubectl용 기본 텍스트 편집기 지정 항목을 참조하십시오.
클러스터 업데이트 예
spec.distribution.version
을 변경하는 것이 클러스터의 롤링 업데이트를 트리거하는 가장 일반적인 방법이며(Tanzu Kubernetes 클러스터 업데이트 참조) 이 필드는 v1alpha2 API에서 더 이상 사용되지 않기 때문에 잠재적인 클러스터 업데이트 문제를 방지하기 위해 알아야 할 몇 가지 고려 사항과 따라야 할 몇 가지 사전 처리 권장 사항이 있습니다.
다음 예는 v1alpha1 API를 사용하여 프로비저닝된 Tanzu Kubernetes 클러스터의 버전을 v1alpha2 API를 실행하는 시스템으로 업데이트하는 방법을 보여줍니다.
클러스터 업그레이드 예 1: 제어부에서 단일 TKR NAME 참조 사용
권장되는 방식은 변환된 규격에서 모든 nodePools[*].tkr.reference.name
블록을 제거하고 controlPlane.tkr.reference.name
을 대상 릴리스의 TKR NAME으로 업데이트하는 것입니다. 이 경우 동일한 Tanzu Kubernetes 릴리스가 모든 nodePools[*]
노드에 전파됩니다.
앞으로 Tanzu Kubernetes 릴리스 버전은 controlPlane
및 nodePools[*]
에서 다를 수 있습니다. 하지만 현재는 클러스터의 모든 릴리스가 일치해야 하므로 controlPlane
에 단일 TKR NAME 참조를 배치하는 것으로 충분합니다.
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-update-example1 namespace: tkgs-cluster-ns spec: settings: network: cni: name: antrea pods: cidrBlocks: - 192.0.2.0/16 serviceDomain: cluster.local services: cidrBlocks: - 198.51.100.0/12 topology: controlPlane: replicas: 3 storageClass: vwt-storage-policy tkr: reference: name: v1.21.2---vmware.1-tkg.1.ee25d55 vmClass: best-effort-medium nodePools: - name: workers replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium
클러스터 업그레이드 예 2: 각 노드 풀에 대해 TKR NAME 참조 사용
두 번째 예는 TKR NAME을 controlPlane
및 nodePools[*]
토폴로지 모두에 대한 tkr.reference.name
블록에 배치하는 것입니다.
이 방식은 Tanzu Kubernetes 릴리스가 노드 풀 간에 다를 수 있는 향후 릴리스에 대비할 수 있다는 이점이 있습니다. 현재는 일치해야 합니다.
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-update-example2 namespace: tkgs-cluster-ns spec: settings: network: cni: name: antrea pods: cidrBlocks: - 192.0.2.0/16 serviceDomain: cluster.local services: cidrBlocks: - 198.51.100.0/12 topology: controlPlane: replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium tkr: reference: name: v1.21.2---vmware.1-tkg.1.ee25d55 nodePools: - name: workers replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium tkr: reference: name: v1.21.2---vmware.1-tkg.1.ee25d55
클러스터 업그레이드 예 3: 더 이상 사용되지 않는 Distribution 필드 사용
spec.distribution.fullVersion
및
spec.distribution.version
을 사용하고 모든
tkr.reference.name
블록을 수동으로 제거하는 것입니다. 하나는 TKR NAME 형식을 사용하고 다른 하나는 null로 표시된 두 필드를 모두 포함해야 합니다.
v1.21.2
및
v1.21
과 같은 버전 바로 가기는 지원되지 않습니다.
spec.distribution.version
사용이 지원되지 않습니다.
fullVersion
에 TKR NAME이 있고
version
필드에 null(빈) 값이 있습니다. 모든
tkr.reference.name
항목은 제거됩니다.
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-update-example3a namespace: tkgs-cluster-ns spec: distribution: fullVersion: v1.21.2---vmware.1-tkg.1.ee25d55 version: "" settings: network: cni: name: antrea pods: cidrBlocks: - 192.0.2.0/16 serviceDomain: cluster.local services: cidrBlocks: - 198.51.100.0/12 topology: controlPlane: replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium nodePools: - name: workers replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium
version
필드에 TKR NAME을 포함하고
fullVersion
필드에 null(빈) 값을 사용할 수 있습니다.
version
필드를 사용하더라도 버전 바로 가기는 지원되지 않습니다. 모든
tkr.reference.name
항목은 제거됩니다.
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-update-example3b namespace: tkgs-cluster-ns spec: distribution: fullVersion: "" version: v1.21.2---vmware.1-tkg.1.ee25d55 settings: network: cni: name: antrea pods: cidrBlocks: - 192.0.2.0/16 serviceDomain: cluster.local services: cidrBlocks: - 198.51.100.0/12 topology: controlPlane: replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium nodePools: - name: workers replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium