kubectl patch 방법을 사용하여 Tanzu Kubernetes 클러스터에 대한 "인플레이스" 업데이트를 수행할 수 있습니다. kubectl patch 방법은 kubectl edit 명령을 사용하여 지원되는 클러스터 업데이트 작업 중 하나를 수행하는 방법의 대안입니다.

Kubectl Patch 명령 정보

제한 사항: 이 항목에 설명된 대로 kubectl patch를 사용하여 TKGS v1alpha2 API를 준수하도록 클러스터 규격을 업데이트하지 마십시오. 이러한 유형의 업데이트에는 kubectl edit를 사용해야 합니다. 클러스터 규격이 TKGS v1alpha2 API로 변환된 후 Tanzu Kubernetes 릴리스 업데이트의 내용을 참조하십시오.
kubectl patch 명령은 클러스터에 대한 "인플레이스" 업데이트를 수행합니다. 이 명령의 목적은 Kubernetes 버전을 업그레이드하는 방법을 제공하는 것이며 그 접근 방법이 여기에 설명되어 있습니다. kubectl patch 명령에 대한 자세한 내용은 Kubernetes 설명서에서 kubectl patch를 사용하여 API 개체 인플레이스 업데이트를 참조하십시오.

여기에 설명된 방식은 UNIX 셸 명령 read를 사용하여 키보드 입력을 가져와서 $PATCH라는 변수에 할당합니다. kubectl patch 명령은 Kubernetes API를 호출하여 클러스터 매니페스트를 업데이트합니다. --type=merge 플래그는 데이터에 기존 매니페스트와 다른 속성만 포함되어 있다는 것을 나타냅니다.

패치 방법을 사용하여 Kubernetes 버전 업그레이드

롤링 업데이트를 트리거하는 가장 일반적인 방법은 .spec.distribution.version.spec.distribution.fullVersion 속성을 사용하여 클러스터에 대한 Kubernetes 배포 버전을 변경하는 것입니다. 검색하는 동안 잠재적인 버전 불일치를 방지하기 위해 version 힌트를 업데이트하고 fullVersion을 설정 해제하거나 null로 표시합니다.

$ read -r -d '' PATCH <<'EOF'
spec:
  distribution:
    fullVersion: null    # NOTE: Must set to null when updating just the version field
    version: v1.18.5
EOF

kubectl patch 명령을 사용하여 업데이트를 적용합니다. 클러스터 매니페스트에서 줄 바꿈 문자를 유지하려면 "$PATCH" 변수 앞뒤에 따옴표를 포함해야 합니다. TKG-CLUSTER-NAME 값을 클러스터의 실제 이름으로 바꿉니다.

kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
예상 결과:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched

패치 방법을 사용하여 노드의 VirtualMachineClass를 변경하여 클러스터 업데이트

Tanzu Kubernetes 클러스터의 롤링 업데이트를 트리거하는 또 다른 방법은 노드 풀의 VirtualMachineClass를 변경하는 것입니다. 즉, .spec.topology.controlPlane.class 속성 또는 .spec.topology.workers.class 속성을 변경하는 것입니다.

read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      class: best-effort-xlarge
    workers:
      class: best-effort-xlarge
EOF

kubectl patch 명령을 사용하여 변수를 클러스터 이름으로 바꾸고 업데이트를 적용합니다.

kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
예상 결과:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched

패치 방법을 사용하여 노드의 StorageClass를 변경하여 클러스터 업데이트

Tanzu Kubernetes 클러스터의 롤링 업데이트를 트리거하는 또 다른 방법은 노드 풀의 StorageClass를 변경하는 것입니다. 즉, .spec.topology.controlPlane.storageClass 속성 또는 .spec.topology.workers.storageClass 속성을 변경하는 것입니다.

$ read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      storageClass: gc-storage-profile
    workers:
      storageClass: gc-storage-profile
EOF
kubectl patch 명령을 사용하여 변수를 클러스터 이름으로 바꾸고 업데이트를 적용합니다.
kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
예상 결과:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched