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 사용 중단 및 추가

이 표에는 v1alpha2 API에서 더 이상 사용되지 않고 새 설정으로 대체된 클러스터 규격 설정이 나열되어 있습니다.
더 이상 사용되지 않는 설정 새 설정 주석

spec.distribution.version

spec.distribution.fullVersion

spec.topology.controlPlane.tkr.refernece.name

spec.topology.nodePools[*].tkr.reference.name

TKR NAME 형식을 사용해야 합니다. 예를 참조하십시오.

spec.topology.workers

spec.topology.nodePools[*]

변환된 클러스터에서 spec.topology.workers 블록은 spec.topology.nodePools[0]이 됩니다.

nodePools 목록의 첫 번째 항목은 name: workers입니다.

spec.topology.controlPlane.count

spec.topology.workers.count

spec.topology.controlPlane.replicas

spec.topology.nodePools[*].replicas

countreplicas로 대체됩니다.

spec.topology.controlPlane.class

spec.topology.workers.class

spec.topology.controlPlane.vmClass

spec.topology.nodePools[*].vmClass

classvmClass로 대체됩니다.

해당 없음

spec.topology.nodePools[*].labels

개체를 구성하고 분류하기 위한 선택적 키-쌍 값. 생성된 노드로 레이블이 전파됨

해당 없음

spec.topology.nodePools[*].taints

노드를 등록할 선택적 taint. 생성된 노드로 사용자 정의 taint가 전파됨

TKR NAME 형식이 필수임

더 이상 사용되지 않는 spec.distribution.version 필드 외에도 Tanzu Kubernetes 릴리스 버전을 지정하기 위한 DISTRIBUTION 형식은 지원되지 않습니다. 즉, 1.21.2+vmware.1-tkg.1.ee25d55, 1.21.2, 1.21 문자열 형식을 사용하여 대상 릴리스를 참조할 수 없습니다.

v1alpha2 API 클러스터 규격에서 Tanzu Kubernetes 릴리스 버전을 참조하는 경우 더 이상 사용되지 않는 DISTRIBUTION 형식이 아닌 TKR NAME 형식을 사용해야 합니다. 더 이상 사용되지 않는 형식이 UPDATES AVAILABLE 열에 표시되지만 TKR NAME 열에 나열된 형식만 지원됩니다.
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 릴리스 버전은 controlPlanenodePools[*]에서 다를 수 있습니다. 하지만 현재는 클러스터의 모든 릴리스가 일치해야 하므로 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을 controlPlanenodePools[*] 토폴로지 모두에 대한 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.fullVersionspec.distribution.version을 사용하고 모든 tkr.reference.name 블록을 수동으로 제거하는 것입니다. 하나는 TKR NAME 형식을 사용하고 다른 하나는 null로 표시된 두 필드를 모두 포함해야 합니다. v1.21.2v1.21과 같은 버전 바로 가기는 지원되지 않습니다.
참고: Ubuntu의 Tanzu Kubernetes 릴리스에서는 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