[기계번역] A closer look at the v1alpha2 TanzuKubernetesCluster format in vSphere with Tanzu

오늘은 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