버전 1.29 이상에서 Google Distributed Cloud는 사용자 클러스터의 제어 영역이 클러스터의 노드 풀보다 부 버전이 최대 두 버전 더 높을 수 있도록 허용합니다. 예를 들어 사용자 클러스터의 제어 영역이 1.29인 경우 클러스터의 노드 풀은 버전 1.16, 1.28 또는 1.29일 수 있습니다. 또한 Google Distributed Cloud를 사용하면 노드 풀을 업그레이드할 때 하나의 부 버전을 건너뛸 수 있습니다. 이전 예시를 사용하면 버전 1.16인 노드 풀을 버전 1.29로 직접 업그레이드하고 1.28로의 업그레이드를 건너뛸 수 있습니다. 노드 풀을 업그레이드할 때 부 버전을 건너뛰는 것을 버전 건너뛰기 업그레이드라고 합니다.
버전 건너뛰기 업그레이드는 Ubuntu 및 COS 노드 풀에서 지원되지만 Windows 노드 풀에서는 지원되지 않습니다. 또한 고급 클러스터가 사용 설정된 경우에는 이 기능을 사용할 수 없습니다.
Kubernetes 제약조건으로 인해 사용자 클러스터의 제어 영역은 한 번에 하나의 마이너 버전씩 업그레이드해야 합니다. 그러나 제어 영역만 업그레이드하면 워크로드가 실행되는 노드 풀을 업그레이드하는 것보다 시간이 훨씬 적게 걸리고 위험이 적습니다.
이 페이지에서는 버전 건너뛰기 업그레이드의 몇 가지 이점을 설명하고 구성 파일을 변경하고 gkectl upgrade cluster
를 실행하여 버전 건너뛰기 업그레이드를 실행하는 단계를 제공합니다.
이 페이지는 기본 기술 인프라의 수명 주기를 관리하는 IT 관리자 및 운영자를 위해 작성되었습니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 작업에 대해 자세히 알아보려면 일반 GKE Enterprise 사용자 역할 및 작업을 참고하세요. 이 페이지에서는 다음에 설명된 대로 Google Distributed Cloud 업그레이드 계획 및 실행에 어느 정도 익숙하다고 가정합니다.
버전 건너뛰기 업그레이드의 이점
이 섹션에서는 버전 건너뛰기 업그레이드를 사용할 때의 몇 가지 이점에 대해 설명합니다.
지원되는 버전으로 클러스터를 더 쉽게 유지할 수 있습니다.
새로운 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는 가장 최근의 세 가지 부 버전을 지원합니다. 클러스터가 지원되지 않는 버전인 경우 클러스터 버전에 따라 노드 풀을 업그레이드할 때 마이너 버전을 건너뛰면 업그레이드 횟수를 줄여 클러스터를 지원되는 버전으로 가져올 수 있습니다.
시간 절약: 노드 풀을 업그레이드할 때 마이너 버전을 건너뛰는 데 걸리는 시간은 노드 풀을 다음 마이너 버전으로 업그레이드하는 데 걸리는 시간과 동일합니다. 따라서 버전 건너뛰기 업그레이드는 노드 풀을 두 번 업그레이드하는 데 걸리는 시간의 약 절반이 소요됩니다. 마찬가지로 버전 건너뛰기 업그레이드의 경우 일반 업그레이드의 두 번과 달리 유효성 검사 기간이 한 번만 있습니다.
중단 감소: 업그레이드 간격이 길어지고 업그레이드 및 유효성 검사에 소요되는 시간이 줄어들면 워크로드가 중단 없이 더 오래 실행됩니다.
업그레이드 중에 컨트롤 플레인 및 노드 풀 버전 제어
사용자 클러스터 구성 파일에서 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.31
사용자 클러스터가 버전 1.29인 경우 이 특수 시퀀스를 사용합니다. 즉, 타겟 버전은 1.31입니다. 사용자 클러스터가 버전 1.29인 경우 사용자 클러스터를 관리하는 관리자 클러스터는 버전 1.27, 1.28 또는 1.29일 수 있습니다.
- 관리자 클러스터가 버전 1.27이면 1.28로 업그레이드합니다.
- 관리자 클러스터가 버전 1.28인 경우 1.29로 업그레이드합니다.
- 사용자 클러스터 제어 영역만 소스 버전 1.29에서 중간 버전 1.30으로 업그레이드합니다. 노드 풀은 소스 버전으로 둡니다. 제어 영역을 한 번에 한 마이너 버전씩 업그레이드해야 하므로 중간 1.30 버전이 필요합니다.
- 관리자 클러스터를 버전 1.29에서 중간 버전 1.30으로 업그레이드합니다.
- 관리자 클러스터를 대상 버전 1.31로 업그레이드합니다.
- 사용자 클러스터 제어 영역과 노드 풀을 대상 버전 1.31로 업그레이드합니다.
1.30 이하
대상 버전이 1.30 이하인 경우 이 시퀀스를 사용하세요.
사용자 클러스터 제어 영역과 모든 노드 풀이 마이너 버전 1.N
이라고 가정해 보겠습니다. 대략적으로 버전 건너뛰기 업그레이드를 사용하여 클러스터를 1.N
에서 1.N+2
로 업그레이드하는 방법은 다음과 같습니다.
- 소스 버전
1.N
에서 중간 버전1.N+1
로 컨트롤 플레인만 업그레이드합니다. 노드 풀은 소스 버전으로 둡니다. 제어 영역을 한 번에 한 마이너 버전씩 업그레이드해야 하므로 중간 버전이 필요합니다. - 컨트롤 플레인과 노드 풀을 타겟 버전
1.N+2
로 업그레이드합니다.
버전 건너뛰기 업그레이드 수행
이 섹션에서는 버전 건너뛰기 업그레이드를 실행하는 단계를 제공합니다.
시작하기 전에
클러스터의 현재 버전 (소스 버전)이 1.16 이상인지 확인합니다. 제어 영역(
gkeOnPremVersion
) 및 모든 노드 풀 (nodePools[i].gkeOnPremVersion
)의 버전을 확인하세요.버전 1.29 이상에서는 서버 측 프리플라이트 검사가 기본적으로 사용 설정됩니다. 방화벽 규칙을 검토하여 필요한 사항을 변경해야 합니다.
버전 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.27인 경우 단계에 따라 관리자 워크스테이션을 업그레이드하고 관리자 클러스터를 버전 1.28로 업그레이드합니다.
관리자 클러스터가 버전 1.28인 경우 단계에 따라 관리자 워크스테이션을 업그레이드하고 관리자 클러스터를 버전 1.29로 업그레이드합니다.
관리자 워크스테이션의 공간을 절약하려면 다운로드한 번들을 삭제합니다.
rm /var/lib/gke/bundles/gke-onprem-vsphere-*.tgz
관리자 클러스터와 모든 사용자 클러스터가 버전 1.29인 경우 버전 업그레이드 건너뛰기를 시작할 수 있습니다.
다음 자리표시자 변수에서 소스 버전 (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
중간 1.30 버전
INTERMEDIATE_VERSION
으로 관리자 워크스테이션을 업그레이드합니다. 업그레이드가 완료되었다는 메시지가 표시될 때까지 기다립니다.해당 번들을 설치합니다.
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
이번에는 타겟 1.31 버전인
TARGET_VERSION
로 관리 워크스테이션을 다시 업그레이드합니다. 업그레이드가 완료되었다는 메시지가 표시될 때까지 기다립니다.해당 번들을 설치합니다.
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
다음과 같이 사용자 클러스터 컨트롤 플레인만 중간 버전으로 업그레이드합니다.
사용자 클러스터 구성 파일을 다음과 같이 변경합니다.
gkeOnPremVersion
필드를 중간 버전인INTERMEDIATE_VERSION
로 설정합니다.nodePools[i].gkeOnPremVersion
의 모든 노드 풀 버전을 소스 버전SOURCE_VERSION
로 설정합니다.
구성 파일을 업데이트하면 다음과 같이 표시됩니다.
gkeOnPremVersion: INTERMEDIATE_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: SOURCE_VERSION ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...
제어 영역을 업그레이드합니다.
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE
USER_CLUSTER_CONFIG
를 사용자 클러스터 구성 파일의 경로로 바꿉니다.
관리자 클러스터 구성 파일의
bundlePath
필드를 번들의 중간 1.30 버전으로 설정합니다.bundlePath="/var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz"
관리자 클러스터를 중간 1.30 버전으로 업그레이드합니다.
gkectl upgrade admin \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG_FILE
관리자 클러스터 구성 파일의
bundlePath
필드를 번들의 타겟 1.31 버전으로 설정합니다.bundlePath="/var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz"
Upgrade the admin cluster to the target 1.31 version:
gkectl upgrade admin \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG_FILE
다음과 같이 컨트롤 플레인과 노드 풀을 타겟 버전으로 업그레이드합니다.
사용자 클러스터 구성 파일을 다음과 같이 변경합니다.
gkeOnPremVersion
필드를 대상 버전TARGET_VERSION
로 설정합니다.모든
nodePools[i].gkeOnPremVersion
를 빈 문자열로 설정합니다.
구성 파일을 업데이트하면 다음과 같이 표시됩니다.
gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...
컨트롤 플레인 및 노드 풀을 업그레이드합니다.
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE
1.30 이하
대상 버전이 1.30 이하인 경우 이 시퀀스를 사용하세요.
다음 자리표시자 변수에서 소스 버전 (
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
중간 버전인
INTERMEDIATE_VERSION
로 관리자 워크스테이션을 업그레이드합니다. 업그레이드가 완료되었다는 메시지가 표시될 때까지 기다립니다.해당 번들을 설치합니다.
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
ADMIN_CLUSTER_KUBECONFIG
를 관리자 클러스터kubeconfig
파일의 경로로 바꿉니다.이번에는 대상 버전인
TARGET_VERSION
로 관리자 워크스테이션을 다시 업그레이드합니다. 업그레이드가 완료되었다는 메시지가 표시될 때까지 기다립니다.해당 번들을 설치합니다.
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
다음과 같이 컨트롤 플레인만 중간 버전으로 업그레이드합니다.
사용자 클러스터 구성 파일을 다음과 같이 변경합니다.
gkeOnPremVersion
필드를 중간 버전인INTERMEDIATE_VERSION
로 설정합니다.nodePools[i].gkeOnPremVersion
의 모든 노드 풀 버전을 소스 버전SOURCE_VERSION
로 설정합니다.
구성 파일을 업데이트하면 다음과 같이 표시됩니다.
gkeOnPremVersion: INTERMEDIATE_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: SOURCE_VERSION ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...
제어 영역을 업그레이드합니다.
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE
USER_CLUSTER_CONFIG
를 사용자 클러스터 구성 파일의 경로로 바꿉니다.
다음과 같이 컨트롤 플레인과 노드 풀을 타겟 버전으로 업그레이드합니다.
사용자 클러스터 구성 파일을 다음과 같이 변경합니다.
gkeOnPremVersion
필드를 대상 버전TARGET_VERSION
로 설정합니다.모든
nodePools[i].gkeOnPremVersion
를 빈 문자열로 설정합니다.
구성 파일을 업데이트하면 다음과 같이 표시됩니다.
gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...
컨트롤 플레인 및 노드 풀을 업그레이드합니다.
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE
업그레이드할 다른 사용자 클러스터가 없는 경우 관리자 워크스테이션에서 번들을 삭제하여 공간을 절약합니다.
rm /var/lib/gke/bundles/gke-onprem-vsphere-*.tgz