오늘은 Tanzu와 함께 vSphere에서 TKG Service(TKGS)를 통해 구축되는 TKG 클러스터의 구성 가능성을 확장하는 새로운 Tanzu Kubernetes Cluster YAML 형식(v1alpha2)에 대해 자세히 알아보려고 합니다. 우리는 두 가지 관점에서 이것을 살펴볼 것입니다. 첫 번째 방법은 v1alpha2 형식에는 여러 매니페스트 설정이 필요하므로 새 TKG 클러스터를 생성할 때의 차이점을 보여 줍니다. 두 번째 관점에서는 v1alpha1에서 v1alpha2 형식으로 업그레이드된 기존 클러스터에서 Tkr(Tandu Kubernetes Release)을 업그레이드하는 방법을 살펴봅니다. 이 절차는 과거에 v1alpha1 클러스터를 업그레이드했던 방식과 조금 다릅니다. Supervisor Cluster를 v1alpha2 형식(예: v1.21.0)을 지원하는 버전으로 업그레이드할 때 v1alpha2로의 이 형식 업그레이드가 자동으로 수행되지만 클러스터에서 실행 중인 실제 릴리스 또는 Kubernetes 버전은 여전히 수동으로 업데이트해야 합니다.

새 v1alpha2 형식 TKG 클러스터를 생성


변경 사항을 입증하는 가장 쉬운 방법은 v1alpha2 형식의 매니페스트를 표시하고 이전 v1alpha1 형식과 비교하는 것입니다. 아래에 몇 가지 간단한 매니페스트 예를 나란히 나열했습니다.

v1alpha1 형식

apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TanzuKubernetesCluster
metadata:
 name: tkg-cluster-02
spec:
 topology:
  controlPlane:
    count: 1
    class: guaranteed-small
    storageClass: vsan-default-storage-policy
  workers:
    count: 2
    class: guaranteed-small
    storageClass: vsan-default-storage-policy
 distribution:
  version: v1.20.7

v1alpha2 형식

apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:
 name: tkg-cluster-01
 namespace: devops1
spec:
 topology:
  controlPlane:
    replicas: 1
    vmClass: guaranteed-small
    storageClass: vsan-default-storage-policy
    tkr:
      reference:
        name: v1.20.7---vmware.1-tkg.1.7fb9067
  nodePools:
  - name: worker-pool-1
    replicas: 2
    vmClass: guaranteed-small
    storageClass: vsan-default-storage-policy
    tkr:
      reference:
        name: v1.20.7---vmware.1-tkg.1.7fb9067

강조해야 할 주요 차이점은 다음과 같습니다.

  • apiVersion: v1alpha2가 v1alpha1을 대체합니다.
  • 메타데이터에 네임스페이스를 지정할 수 있습니다.
  • spec.topology.controlPlane.replicas가 spec.topology.count를 대체합니다.
  • vmClass가 가상 시스템 클래스 유형의 클래스를 대체합니다.
  • 릴리스/배포를 지정하는 새 spec.topology.controlPlane.tkr 항목입니다.
  • spec.spec입니다.작업자는 spec.topology.nodePools로 대체됩니다.
  • distribution.version이 사용되지 않습니다.

현재 릴리스에서는 tkr.reference.name 필드가 ControlPlane 및 nodePools 섹션에서 모두 일치해야 합니다. 향후 노드 풀용 Tanzu Kubernetes 릴리스가 지원될 수 있으므로, 이 새로운 형식 중 일부는 미래를 대비한 것입니다.

TKG 서비스를 통해 새 TKC를 배포하려면 클러스터 매니페스트에 지정된 가상 시스템 클래스 및 스토리지 클래스를 클러스터가 배포되는 네임스페이스에 추가해야 합니다. 다음은 VM 클래스와 스토리지 클래스가 모두 추가되거나 바인딩된 환경의 “devops1” 네임스페이스 보기입니다.

명령줄을 사용하여 클러스터를 생성하는 데 사용할 매개 변수를 사용할 수 있는지 확인할 수도 있습니다. 다음과 같이 사용 가능한 모든 가상 시스템 클래스, 스토리지 클래스 및 네임스페이스에 바인딩된 가상 시스템 클래스를 표시할 수 있습니다.

% kubectl get virtualmachineclass
NAME                  CPU   MEMORY   AGE
best-effort-2xlarge   8     64Gi     81d
best-effort-4xlarge   16    128Gi    81d
best-effort-8xlarge   32    128Gi    81d
best-effort-large     4     16Gi     81d
best-effort-medium    2     8Gi      231d
best-effort-small     2     4Gi      231d
best-effort-xlarge    4     32Gi     81d
best-effort-xsmall    2     2Gi      81d
guaranteed-2xlarge    8     64Gi     81d
guaranteed-4xlarge    16    128Gi    81d
guaranteed-8xlarge    32    128Gi    81d
guaranteed-large      4     16Gi     231d
guaranteed-medium     2     8Gi      231d
guaranteed-small      2     4Gi      81d
guaranteed-xlarge     4     32Gi     81d
guaranteed-xsmall     2     2Gi      81d


% kubectl get storageclass
NAME                                    PROVISIONER              RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
vsan-default-storage-policy             csi.vsphere.vmware.com   Delete          Immediate           true                   253d


% kubectl get vmclassbinding -n devops1
NAME               VIRTUALMACHINECLASS   AGE
guaranteed-small   guaranteed-small      2m17s

사용 가능한 Tanzu Kubernetes Release는 tanzukubernetesrelease 지시문(줄여서 tkr)을 사용하여 쿼리할 수도 있습니다. 보다시피 최신 버전은 현재 v1.20.7로 위의 매니페스트에 배치되어 있습니다.

% kubectl get tkr
NAME                                VERSION                          READY   COMPATIBLE   CREATED   UPDATES AVAILABLE
v1.16.12---vmware.1-tkg.1.da7afe7   1.16.12+vmware.1-tkg.1.da7afe7   True    True         22h       [1.17.17+vmware.1-tkg.1.d44d45a 1.16.14+vmware.1-tkg.1.ada4837]
v1.16.14---vmware.1-tkg.1.ada4837   1.16.14+vmware.1-tkg.1.ada4837   True    True         22h       [1.17.17+vmware.1-tkg.1.d44d45a]
v1.16.8---vmware.1-tkg.3.60d2ffd    1.16.8+vmware.1-tkg.3.60d2ffd    False   False        22h       [1.17.17+vmware.1-tkg.1.d44d45a 1.16.14+vmware.1-tkg.1.ada4837]
v1.17.11---vmware.1-tkg.1.15f1e18   1.17.11+vmware.1-tkg.1.15f1e18   True    True         22h       [1.18.15+vmware.1-tkg.2.ebf6117 1.17.17+vmware.1-tkg.1.d44d45a]
v1.17.11---vmware.1-tkg.2.ad3d374   1.17.11+vmware.1-tkg.2.ad3d374   True    True         22h       [1.18.15+vmware.1-tkg.2.ebf6117 1.17.17+vmware.1-tkg.1.d44d45a]
v1.17.13---vmware.1-tkg.2.2c133ed   1.17.13+vmware.1-tkg.2.2c133ed   True    True         22h       [1.18.15+vmware.1-tkg.2.ebf6117 1.17.17+vmware.1-tkg.1.d44d45a]
v1.17.17---vmware.1-tkg.1.d44d45a   1.17.17+vmware.1-tkg.1.d44d45a   True    True         22h       [1.18.15+vmware.1-tkg.2.ebf6117]
v1.17.7---vmware.1-tkg.1.154236c    1.17.7+vmware.1-tkg.1.154236c    True    True         22h       [1.18.15+vmware.1-tkg.2.ebf6117 1.17.17+vmware.1-tkg.1.d44d45a]
v1.17.8---vmware.1-tkg.1.5417466    1.17.8+vmware.1-tkg.1.5417466    True    True         22h       [1.18.15+vmware.1-tkg.2.ebf6117 1.17.17+vmware.1-tkg.1.d44d45a]
v1.18.10---vmware.1-tkg.1.3a6cd48   1.18.10+vmware.1-tkg.1.3a6cd48   True    True         22h       [1.19.7+vmware.1-tkg.2.f52f85a 1.18.15+vmware.1-tkg.2.ebf6117]
v1.18.15---vmware.1-tkg.1.600e412   1.18.15+vmware.1-tkg.1.600e412   True    True         22h       [1.19.7+vmware.1-tkg.2.f52f85a 1.18.15+vmware.1-tkg.2.ebf6117]
v1.18.15---vmware.1-tkg.2.ebf6117   1.18.15+vmware.1-tkg.2.ebf6117   True    True         22h       [1.19.7+vmware.1-tkg.2.f52f85a]
v1.18.5---vmware.1-tkg.1.c40d30d    1.18.5+vmware.1-tkg.1.c40d30d    True    True         22h       [1.19.7+vmware.1-tkg.2.f52f85a 1.18.15+vmware.1-tkg.2.ebf6117]
v1.19.7---vmware.1-tkg.1.fc82c41    1.19.7+vmware.1-tkg.1.fc82c41    True    True         22h       [1.20.7+vmware.1-tkg.1.7fb9067 1.19.7+vmware.1-tkg.2.f52f85a]
v1.19.7---vmware.1-tkg.2.f52f85a    1.19.7+vmware.1-tkg.2.f52f85a    True    True         22h       [1.20.7+vmware.1-tkg.1.7fb9067]
v1.20.2---vmware.1-tkg.1.1d4f79a    1.20.2+vmware.1-tkg.1.1d4f79a    True    True         22h       [1.20.7+vmware.1-tkg.1.7fb9067]
v1.20.2---vmware.1-tkg.2.3e10706    1.20.2+vmware.1-tkg.2.3e10706    True    True         22h       [1.20.7+vmware.1-tkg.1.7fb9067]
v1.20.7---vmware.1-tkg.1.7fb9067    1.20.7+vmware.1-tkg.1.7fb9067    True    True         22h

새 클러스터를 생성하려면 이전에 사용한 kubectl apply -f 명령을 실행하면 됩니다. 모든 작업이 잘 진행되면 클러스터가 생성되어야 합니다.

% kubectl apply -f tanzucluster-v1alpha2-v1.20.7.yaml
tanzukubernetescluster.run.tanzu.vmware.com/tkg-cluster-03 created

% kubectl get tanzukubernetesclusters -n devops1
NAME            CONTROL PLANE  WORKER  TKR NAME                          AGE  READY  TKR COMPATIBLE  UPDATES AVAILABLE
tkg-cluster-03  1              2        v1.20.7---vmware.1-tkg.1.7fb9067  37m  True    True

OK – 새 클러스터를 생성하는 방법을 보여줍니다. 기존 클러스터를 업그레이드하는 방법은 어떻습니까?

v1alpha2 형식 TKG 클러스터를 업그레이드

vSphere with Tanzu 환경에서 Supervisor Cluster를 업그레이드한 후 TKG 클러스터가 v1alpha2 형식으로 자동으로 업그레이드됩니다. 현재 환경에서 vSphere는 버전 7.0U3c로, Supervisor Cluster는 버전 1.21.0으로 업그레이드했습니다. 그러나 이 프로세스는 릴리스 버전(tkr)을 업그레이드하지 않습니다. 이 작업은 여전히 수동으로 수행되지만 이제 업데이트해야 하는 필드가 v1alpha1 형식 클러스터의 이전 업그레이드와 비교할 때 다릅니다. v1alpha1 클러스터에서 다음 필드를 변경합니다.

spec:
  distribution:
    fullVersion: v1.20.2+vmware.1-tkg.2.3e10706
    version: v1.20.2

위 예의 경우는 다음과 같습니다.

spec:
  distribution:
    fullVersion: null
    version: v1.20.7

그러면 TKG 클러스터의 롤링 업데이트가 자동으로 새 버전으로 트리거됩니다. Supervisor Cluster를 v1.21.0으로 업그레이드하지 않았고, TKG 클러스터가 v1alpha2 형식으로 변환되지 않은 경우 이 절차를 따라야 합니다.

새 v1alpha2 형식에서는 controlPlane과 nodePools 섹션에서 tkr.reference.name 필드를 변경해야 합니다. 예를 들어 TKG 클러스터를 v1.20.7로 업그레이드하려고 합니다. kubectl edit tanguubernetescluster 명령을 실행한 후 다음 필드를 변경해야 합니다(다른 일부 필드는 잘림).

.
.
topology:
    controlPlane:
      replicas: 1
      storageClass: vsan-default-storage-policy
     tkr:
        reference:
          name: v1.20.7---vmware.1-tkg.1.7fb9067         <<< change here 
      vmClass: guaranteed-small
    nodePools:
    - name: workers
      replicas: 3
      storageClass: vsan-default-storage-policy
      tkr:
        reference:
          name: v1.20.7---vmware.1-tkg.1.7fb9067         <<< and here
      vmClass: best-effort-small

그러면 이전처럼 롤링 업그레이드가 트리거됩니다. 일부 영역에서 tkr 참조를 제거할 수도 있고 사용되지 않는 distribution.version을 다시 사용할 수도 있기 때문에 이와 관련된 몇 가지 문제가 있습니다. 만약 관심이 있다면 이것을 어떻게 해야 하는지에 대한 훌륭한 기록이 공식 문서에 있습니다.

출처 : https://cormachogan.com/2022/02/03/a-closer-look-at-the-v1alpha2-tanzukubernetescluster-format-in-vsphere-with-tanzu/
답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like

[TCE] Designs – Package Process

이 문서에서는 Tanzu Community Edition에서 사용할 패키지 작성에 대해 설명합니다. 패키지가 구현됨에 따라 시간이 지남에 따라 발전하는 설계…

[TCE] Introduction : Architecture

Tanzu Community Edition은 Kubernetes 클러스터의 부트스트래핑 및 관리를 가능하게 하는 다양한 구성 요소와 위에서 실행되는 다양한 플랫폼 서비스로…