노드 풀 업그레이드 시 버전 건너뛰기

버전 1.29 이상에서 Google Distributed Cloud는 사용자 클러스터의 컨트롤 플레인이 클러스터의 노드 풀보다 최대 두 부 버전 높을 수 있도록 허용합니다. 예를 들어 사용자 클러스터의 컨트롤 플레인이 1.29인 경우 클러스터의 노드 풀은 버전 1.16, 1.28 또는 1.29일 수 있습니다. 또한 Google Distributed Cloud를 사용하면 노드 풀을 업그레이드할 때 하나의 부 버전을 건너뛸 수 있습니다. 이전 예시를 사용하여 버전 1.16인 노드 풀을 버전 1.29로 직접 업그레이드하고 1.28로의 업그레이드를 건너뛸 수 있습니다. 노드 풀을 업그레이드할 때 부 버전을 건너뛰는 것을 버전 건너뛰기 업그레이드라고 합니다.

이 페이지에서는 버전 건너뛰기 업그레이드의 이점을 설명하고 구성 파일을 변경하고 gkectl upgrade cluster를 실행하여 버전 건너뛰기 업그레이드를 실행하는 단계를 제공합니다.

이 페이지는 기본 기술 인프라의 수명 주기를 관리하는 IT 관리자 및 운영자를 위해 작성되었습니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 태스크에 대해 자세히 알아보려면 일반 GKE 사용자 역할 및 태스크를 참조하세요. 이 페이지에서는 다음 설명에 따라 Google Distributed Cloud 업그레이드를 계획하고 실행하는 데 어느 정도 익숙하다고 가정합니다.

제한사항

버전 건너뛰기 업그레이드에는 다음과 같은 제한사항이 있습니다.

  • 버전 건너뛰기 업그레이드는 Ubuntu 및 COS 노드 풀에서 지원되지만 Windows 노드 풀에서는 지원되지 않습니다.

  • 버전 1.31: 이 기능은 고급 클러스터에서 사용할 수 없습니다.

  • 버전 1.32 이상: 이 기능은 고급 클러스터에서 사용할 수 있습니다.

  • Kubernetes 제약 조건으로 인해 사용자 클러스터의 제어 영역은 한 번에 한 부 버전씩 업그레이드해야 합니다. 하지만 컨트롤 플레인만 업그레이드하는 것이 워크로드가 실행되는 노드 풀을 업그레이드하는 것보다 시간이 훨씬 적게 걸리고 위험도 적습니다.

버전 건너뛰기 업그레이드의 이점

이 섹션에서는 버전 건너뛰기 업그레이션을 사용할 때의 몇 가지 이점에 대해 설명합니다.

지원되는 버전으로 클러스터를 더 쉽게 유지

새 Google Distributed Cloud 부 버전은 4개월마다 출시되며 각 부 버전에는 1년의 지원 기간이 있습니다. 클러스터가 지원되는 기간 내에 유지되려면 다음 그림과 같이 약 4개월마다 부 버전 업그레이드를 실행해야 합니다.

12월

1월

2월

3월

4월

5월

6월

7월

8월

9월

10월

11월

12월

1월

2월

3월

4월

5월

6월

7월

8월

9월

10월

11월

12월

1월

2월

3월

1.14 업그레이드
1.15 업그레이드
1.16 업그레이드
1.28 업그레이드
1.29 업그레이드

새 부 버전을 검증하기 위해 긴 검증 기간이 필요하고 클러스터를 새 부 버전으로 업그레이드하기 위해 짧은 유지보수 기간이 필요한 경우 이 요구사항으로 인해 문제가 발생합니다. 이러한 문제를 해결하기 위해 버전 건너뛰기 업그레이드를 사용할 수 있습니다. 이 방법을 사용하면 4개월마다 클러스터를 업그레이드하는 대신 8개월마다 클러스터를 업그레이드하여 지원되는 기간 내에 클러스터를 유지할 수 있습니다. 다음 표는 버전 1.15 업그레이드를 건너뛰면 4개월이 아닌 8개월 후에만 업그레이드된다는 것을 보여줍니다.

12월

1월

2월

3월

4월

5월

6월

7월

8월

9월

10월

11월

12월

1월

2월

3월

4월

5월

6월

7월

8월

9월

10월

11월

12월

1월

2월

3월

1.14 업그레이드
1.15
1.16 업그레이드
1.28
1.29

노드 풀을 업그레이드할 때 마이너 버전을 하나 건너뛰면 지원되는 버전을 유지하는 데 필요한 업그레이드 횟수가 줄어듭니다. 또한 건너뛴 부 버전은 제어 영역에서만 일시적으로 사용되므로 이를 지정할 필요가 없습니다.

유지보수 기간 단축

버전 건너뛰기 업그레이드를 사용하면 유지보수 기간을 늘릴 필요가 없습니다. 노드 풀을 업그레이드할 때 부 버전을 건너뛰는 데 걸리는 시간은 노드 풀을 다음 부 버전으로 업그레이드하는 데 걸리는 시간과 동일합니다. 노드 풀의 각 노드가 한 번씩 드레인되고 다시 생성되기 때문입니다. 따라서 버전 건너뛰기 업그레이드를 사용하면 전체적으로 시간을 절약하고 워크로드 중단을 줄일 수 있습니다.

요약

요약하자면 버전 건너뛰기 업그레이드는 다음과 같은 이점을 제공합니다.

  • 클러스터를 지원되는 버전으로 업데이트: Google Distributed Cloud는 최신 부 버전 3개를 지원합니다. 클러스터가 지원되지 않는 버전에 있는 경우 클러스터 버전에 따라 노드 풀을 업그레이드할 때 부 버전을 건너뛰면 업그레이드 횟수를 줄여 클러스터를 지원되는 버전으로 만들 수 있습니다.

  • 시간 절약: 노드 풀을 업그레이드할 때 부 버전을 건너뛰는 데 걸리는 시간은 노드 풀을 다음 부 버전으로 업그레이드하는 데 걸리는 시간과 동일합니다. 따라서 버전 건너뛰기 업그레이드는 노드 풀을 두 번 업그레이드하는 데 걸리는 시간의 약 절반이 걸립니다. 마찬가지로 버전 건너뛰기 업그레이드를 사용하면 일반 업그레이드와 달리 검증 기간이 하나만 있습니다.

  • 중단 감소: 업그레이드 간 간격이 길어지고 업그레이드 및 검증에 소요되는 시간이 줄어들면 워크로드가 중단되는 횟수가 줄어들고 더 오래 실행됩니다.

업그레이드 중 컨트롤 플레인 및 노드 풀 버전 제어

사용자 클러스터 구성 파일에서 nodePools[i].gkeOnPremVersion 필드를 사용하면 특정 노드 풀이 최상위 gkeOnPremVersion 필드와 다른 버전을 사용할 수 있습니다. nodePools[i].gkeOnPremVersion 필드 값을 변경하면 gkectl upgrade cluster를 실행할 때 노드 풀이 업그레이드되는 시점을 제어할 수 있습니다. 구성 파일에 nodePools[i].gkeOnPremVersion을 포함하지 않거나 필드를 빈 문자열로 설정하면 노드 풀이 gkeOnPremVersion에 지정된 동일한 대상 버전으로 업그레이드됩니다.

버전 규칙

업그레이드 규칙은 클러스터 부 버전에 따라 다릅니다.

  • 버전 1.30 이하의 경우 사용자 클러스터 마이너 버전이 관리자 클러스터 마이너 버전보다 높거나 같아야 합니다. 패치 버전은 중요하지 않습니다. 예를 들어 사용자 클러스터가 버전 1.30.1인 경우 관리자 클러스터를 1.30.3과 같은 더 높은 패치 버전으로 업그레이드할 수 있습니다.

  • 버전 1.31 이상의 경우 패치 버전을 포함한 관리자 클러스터 버전이 사용자 클러스터 버전보다 크거나 같아야 합니다. 예를 들어 관리자 클러스터가 버전 1.31.1인 경우 사용자 클러스터를 업그레이드할 수 있는 가장 높은 버전은 1.31.1입니다.

클러스터를 버전 1.31로 업그레이드하려면 먼저 모든 클러스터를 버전 1.30으로 가져와야 합니다. 모든 클러스터가 버전 1.30이 된 후에 관리자 클러스터를 버전 1.31로 업그레이드합니다. 그런 다음 사용자 클러스터를 관리자 클러스터와 동일한 1.31 패치 버전으로 업그레이드할 수 있습니다.

버전 업그레이드 건너뛰기 시퀀스

관리자 클러스터와 사용자 클러스터를 업그레이드하는 순서는 업그레이드할 클러스터 버전(대상 버전이라고 함)에 따라 다릅니다.

1.32 이상

타겟 버전이 1.32 이상인 경우 이 시퀀스를 사용합니다. 사용자 클러스터 제어 영역과 모든 노드 풀이 부 버전 1.N에 있다고 가정해 보겠습니다. 개략적으로 버전 건너뛰기 업그레이드를 사용하여 클러스터를 1.N에서 1.N+2로 업그레이드하는 방법은 다음과 같습니다.

  1. 관리자 클러스터를 버전 1.N에서 중간 버전인 1.N+1로 업그레이드합니다.
  2. 관리자 클러스터를 중간 버전 1.N+1에서 대상 버전 1.N+2로 업그레이드합니다.
  3. 소스 버전(1.N)에서 중간 버전(1.N+1)으로 사용자 클러스터 컨트롤 플레인만 업그레이드합니다. 노드 풀을 소스 버전으로 유지합니다. 제어 영역은 한 번에 한 마이너 버전씩 업그레이드해야 하므로 중간 버전이 필요합니다.
  4. 컨트롤 플레인과 노드 풀을 대상 버전인 1.N+2로 업그레이드합니다.

1.31

사용자 클러스터가 버전 1.29인 경우 이 특수 시퀀스를 사용합니다. 즉, 타겟 버전은 1.31입니다. 사용자 클러스터가 버전 1.29인 경우 사용자 클러스터를 관리하는 관리자 클러스터는 버전 1.27, 1.28 또는 1.29일 수 있습니다.

  1. 관리자 클러스터가 버전 1.27이면 1.28로 업그레이드합니다.
  2. 관리자 클러스터가 버전 1.28인 경우 1.29로 업그레이드합니다.
  3. 소스 버전 1.29에서 중간 버전 1.30으로 사용자 클러스터 컨트롤 플레인만 업그레이드합니다. 노드 풀을 소스 버전으로 유지합니다. 제어 영역은 한 번에 한 마이너 버전씩 업그레이드해야 하므로 중간 1.30 버전이 필요합니다.
  4. 관리자 클러스터를 버전 1.29에서 중간 버전인 1.30으로 업그레이드합니다.
  5. 관리자 클러스터를 대상 버전인 1.31로 업그레이드합니다.
  6. 사용자 클러스터 컨트롤 플레인과 노드 풀을 대상 버전인 1.31로 업그레이드합니다.

1.30 이하

타겟 버전이 1.30 이하인 경우 이 시퀀스를 사용합니다.

사용자 클러스터 제어 영역과 모든 노드 풀이 부 버전 1.N에 있다고 가정해 보겠습니다. 개략적으로 버전 건너뛰기 업그레이드를 사용하여 클러스터를 1.N에서 1.N+2로 업그레이드하는 방법은 다음과 같습니다.

  1. 소스 버전 1.N에서 중간 버전 1.N+1으로 컨트롤 플레인만 업그레이드합니다. 노드 풀을 소스 버전으로 유지합니다. 제어 영역은 한 번에 한 마이너 버전씩 업그레이드해야 하므로 중간 버전이 필요합니다.
  2. 컨트롤 플레인과 노드 풀을 타겟 버전 1.N+2로 업그레이드합니다.

버전 건너뛰기 업그레이드 실행

이 섹션에서는 버전 건너뛰기 업그레이드를 실행하는 단계를 제공합니다.

시작하기 전에

  1. 클러스터의 현재 버전 (소스 버전)이 버전 1.16 이상인지 확인합니다. 컨트롤 플레인(gkeOnPremVersion)과 모든 노드 풀 (nodePools[i].gkeOnPremVersion)의 버전을 확인하세요.

  2. 버전 1.29 이상에서는 서버 측 프리플라이트 검사가 기본적으로 사용 설정됩니다. 필요한 변경사항이 있는지 방화벽 규칙을 검토하세요.

  3. 버전 1.28 이상으로 업그레이드하려면 kubernetesmetadata.googleapis.com을 사용 설정하고 로깅-모니터링 서비스 계정kubernetesmetadata.publisher IAM 역할을 부여해야 합니다. 자세한 내용은 Google API 및 IAM 요구사항을 참고하세요.

업그레이드 수행

1.31

사용자 클러스터가 버전 1.29인 경우 이 특수 시퀀스를 사용합니다. 즉, 타겟 버전은 1.31입니다. 이 시퀀스는 버전 1.31에서 버전 규칙이 변경되었기 때문에 필요합니다.

사용자 클러스터가 버전 1.29인 경우 사용자 클러스터를 관리하는 관리자 클러스터는 버전 1.27, 1.28 또는 1.29일 수 있습니다.

  1. 관리자 클러스터가 버전 1.27인 경우 단계에 따라 관리자 워크스테이션을 업그레이드하고 관리자 클러스터를 버전 1.28로 업그레이드합니다.

  2. 관리자 클러스터가 버전 1.28인 경우 단계를 따라 관리자 워크스테이션을 업그레이드하고 관리자 클러스터를 버전 1.29로 업그레이드합니다.

  3. 관리자 워크스테이션의 공간을 절약하려면 다운로드한 번들을 삭제하세요.

    rm /var/lib/gke/bundles/gke-onprem-vsphere-*.tgz
    

관리자 클러스터와 모든 사용자 클러스터가 버전 1.29인 경우 버전 건너뛰기 업그레이드를 시작할 수 있습니다.

  1. 다음 자리표시자 변수에서 소스 버전 (1.29), 중간 버전 (1.30), 타겟 버전 (1.31)을 정의합니다. 모든 버전은 1.29.700-gke.110과 같은 x.y.z-gke.N 형식의 전체 버전 번호여야 합니다.

    버전
    현재 사용자 클러스터의 1.29 버전을 가져옵니다. 소스 버전입니다. SOURCE_VERSION
    중간 1.30 버전을 선택합니다. INTERMEDIATE_VERSION
    1.31 대상 버전을 선택합니다. 1.31 부 버전에서 권장 패치를 선택합니다. TARGET_VERSION
  2. 관리자 워크스테이션을 업그레이드하여 중간 버전인 1.30(INTERMEDIATE_VERSION)으로 업그레이드합니다. 업그레이드가 성공했음을 나타내는 메시지가 표시될 때까지 기다립니다.

  3. 해당 번들을 설치합니다.

    gkectl prepare \
        --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  4. 이번에는 대상 1.31 버전인 TARGET_VERSION관리자 워크스테이션을 다시 업그레이드합니다. 업그레이드가 성공했음을 나타내는 메시지가 표시될 때까지 기다립니다.

  5. 해당 번들을 설치합니다.

    gkectl prepare \
        --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  6. 다음과 같이 사용자 클러스터 컨트롤 플레인만 중간 버전으로 업그레이드합니다.

    1. 사용자 클러스터 구성 파일을 다음과 같이 변경합니다.

      • gkeOnPremVersion 필드를 중간 버전인 INTERMEDIATE_VERSION로 설정합니다.

      • nodePools[i].gkeOnPremVersion의 모든 노드 풀 버전을 소스 버전 SOURCE_VERSION로 설정합니다.

      구성 파일을 업데이트하면 다음과 같이 표시됩니다.

      gkeOnPremVersion: INTERMEDIATE_VERSION
      ...
      nodePools:
      - name: pool-1
        gkeOnPremVersion: SOURCE_VERSION
        ...
      - name: pool-2
        gkeOnPremVersion: SOURCE_VERSION
        ...
      
    2. 컨트롤 플레인 업그레이드:

      gkectl upgrade cluster \
          --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
          --config USER_CLUSTER_CONFIG_FILE
      

      USER_CLUSTER_CONFIG를 사용자 클러스터 구성 파일의 경로로 바꿉니다.

  7. 관리자 클러스터 구성 파일에서 bundlePath 필드를 번들의 중간 1.30 버전으로 설정합니다.

    bundlePath="/var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz"
    
  8. 관리자 클러스터를 중간 1.30 버전으로 업그레이드합니다.

    gkectl upgrade admin \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config ADMIN_CLUSTER_CONFIG_FILE
    
  9. 관리자 클러스터 구성 파일에서 bundlePath 필드를 타겟 1.31 버전의 번들로 설정합니다.

    bundlePath="/var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz"

  10. Upgrade the admin cluster to the target 1.31 version:

    gkectl upgrade admin \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config ADMIN_CLUSTER_CONFIG_FILE
    
  11. 다음과 같이 컨트롤 플레인과 노드 풀을 타겟 버전으로 업그레이드합니다.

    1. 사용자 클러스터 구성 파일을 다음과 같이 변경합니다.

      • gkeOnPremVersion 필드를 타겟 버전 TARGET_VERSION로 설정합니다.

      • 모든 nodePools[i].gkeOnPremVersion을 빈 문자열로 설정합니다.

      구성 파일을 업데이트하면 다음과 같이 표시됩니다.

      gkeOnPremVersion: TARGET_VERSION
      ...
      nodePools:
      - name: pool-1
        gkeOnPremVersion: ""
        ...
      - name: pool-2
        gkeOnPremVersion: ""
        ...
      
    2. 컨트롤 플레인과 노드 풀을 업그레이드합니다.

      gkectl upgrade cluster \
          --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
          --config USER_CLUSTER_CONFIG_FILE
      

1.30 이하

타겟 버전이 1.30 이하인 경우 이 시퀀스를 사용합니다.

  1. 다음 자리표시자 변수에서 소스 버전 (1.N), 중간 버전 (1.N+1), 타겟 버전 (1.N+2)을 정의합니다. 모든 버전은 1.16.11-gke.25과 같은 x.y.z-gke.N 형식의 전체 버전 번호여야 합니다.

    버전
    현재 클러스터 버전을 가져옵니다. 소스 버전(1.N)입니다. SOURCE_VERSION
    중간 버전(1.N+1)을 선택합니다. INTERMEDIATE_VERSION
    타겟 버전 (1.N+2)을 선택합니다. 타겟 마이너 버전에서 권장 패치를 선택합니다. TARGET_VERSION
  2. 관리자 워크스테이션을 중간 버전인 INTERMEDIATE_VERSION로 업그레이드합니다. 업그레이드가 성공했음을 나타내는 메시지가 표시될 때까지 기다립니다.

  3. 해당 번들을 설치합니다.

    gkectl prepare \
        --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    ADMIN_CLUSTER_KUBECONFIG를 관리자 클러스터 kubeconfig 파일의 경로로 바꿉니다.

  4. 관리자 워크스테이션을 업그레이드합니다. 이번에는 대상 버전인 TARGET_VERSION로 업그레이드합니다. 업그레이드가 성공했음을 나타내는 메시지가 표시될 때까지 기다립니다.

  5. 해당 번들을 설치합니다.

    gkectl prepare \
        --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  6. 다음과 같이 컨트롤 플레인만 중간 버전으로 업그레이드합니다.

    1. 사용자 클러스터 구성 파일을 다음과 같이 변경합니다.

      • gkeOnPremVersion 필드를 중간 버전인 INTERMEDIATE_VERSION로 설정합니다.

      • nodePools[i].gkeOnPremVersion의 모든 노드 풀 버전을 소스 버전 SOURCE_VERSION로 설정합니다.

      구성 파일을 업데이트하면 다음과 같이 표시됩니다.

      gkeOnPremVersion: INTERMEDIATE_VERSION
      ...
      nodePools:
      - name: pool-1
        gkeOnPremVersion: SOURCE_VERSION
        ...
      - name: pool-2
        gkeOnPremVersion: SOURCE_VERSION
        ...
      
    2. 컨트롤 플레인 업그레이드:

      gkectl upgrade cluster \
          --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
          --config USER_CLUSTER_CONFIG_FILE
      

      USER_CLUSTER_CONFIG를 사용자 클러스터 구성 파일의 경로로 바꿉니다.

  7. 다음과 같이 컨트롤 플레인과 노드 풀을 타겟 버전으로 업그레이드합니다.

    1. 사용자 클러스터 구성 파일을 다음과 같이 변경합니다.

      • gkeOnPremVersion 필드를 타겟 버전 TARGET_VERSION로 설정합니다.

      • 모든 nodePools[i].gkeOnPremVersion을 빈 문자열로 설정합니다.

      구성 파일을 업데이트하면 다음과 같이 표시됩니다.

      gkeOnPremVersion: TARGET_VERSION
      ...
      nodePools:
      - name: pool-1
        gkeOnPremVersion: ""
        ...
      - name: pool-2
        gkeOnPremVersion: ""
        ...
      
    2. 컨트롤 플레인과 노드 풀을 업그레이드합니다.

      gkectl upgrade cluster \
          --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
          --config USER_CLUSTER_CONFIG_FILE
      

업그레이드할 다른 사용자 클러스터가 없는 경우 관리자 워크스테이션에서 번들을 삭제하여 공간을 절약합니다.

rm /var/lib/gke/bundles/gke-onprem-vsphere-*.tgz

다음 단계