이 페이지에서는 VMware에서 Google Distributed Cloud (소프트웨어 전용)로 만든 사용자 클러스터에서 제어 영역과 노드 풀을 별도로 업그레이드하는 방법을 보여줍니다. 이 페이지는 기본 기술 인프라의 수명 주기를 관리하는 IT 관리자 및 운영자를 위해 작성되었습니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 작업에 대해 자세히 알아보려면 일반 GKE Enterprise 사용자 역할 및 작업을 참고하세요. 이 문서를 읽기 전에 다음에 설명된 대로 Google Distributed Cloud 업그레이드 계획 및 실행에 익숙해야 합니다.
Ubuntu 및 COS 노드 풀의 경우 제어 영역과 별도로 노드 풀의 업그레이드가 지원되지만 Windows 노드 풀에서는 이러한 업그레이드가 지원되지 않습니다. 또한 이 기능은 고급 클러스터에서는 사용할 수 없습니다.
제어 영역과 노드 풀을 별도로 업그레이드해야 하는 이유는 무엇인가요?
클러스터의 버전이 1.16 이상이면 노드 풀을 업그레이드할 때 부 버전을 건너뛸 수 있습니다. 버전 건너뛰기 업그레이드를 실행하면 노드 풀을 두 버전씩 순차적으로 업그레이드하는 데 걸리는 시간이 절반으로 줄어듭니다. 또한 버전 건너뛰기 업그레이드를 사용하면 지원되는 버전을 계속 사용하는 데 필요한 업그레이드 간격을 늘릴 수 있습니다. 업그레이드 횟수를 줄이면 워크로드 중단 및 확인 시간이 줄어듭니다. 자세한 내용은 노드 풀 업그레이드 시 버전 건너뛰기를 참고하세요.
특정 상황에서는 사용자 클러스터의 노드 풀 중 일부만 업그레이드하려는 경우가 있습니다. 예를 들면 다음과 같습니다.
먼저 트래픽이 적거나 가장 중요하지 않은 워크로드를 실행하는 제어 영역과 노드 풀을 업그레이드할 수 있습니다. 워크로드가 새 버전에서 올바르게 실행된다고 확신하면 결국 모든 노드 풀이 업그레이드될 때까지 추가 노드 풀을 업그레이드할 수 있습니다.
클러스터 업그레이드를 위한 하나의 긴 유지보수 기간 대신 여러 유지보수 기간에 걸쳐 클러스터를 업그레이드할 수 있습니다. 유지보수 기간의 시간을 예측하는 방법에 관한 자세한 내용은 소요 시간 예측 및 유지보수 기간 계획을 참고하세요.
시작하기 전에
버전 1.29 이상에서는 서버 측 프리플라이트 검사가 기본적으로 사용 설정됩니다. 방화벽 규칙을 검토하여 필요한 사항을 변경해야 합니다.
버전 1.28 이상으로 업그레이드하려면
kubernetesmetadata.googleapis.com
을 사용 설정하고 로깅 모니터링 서비스 계정에kubernetesmetadata.publisher
IAM 역할을 부여해야 합니다. 자세한 내용은 Google API 및 IAM 요구사항을 참고하세요.현재 클러스터 버전이 1.14 이상인지 확인합니다.
컨트롤 플레인 및 선택한 노드 풀 업그레이드
gkectl
, Google Cloud CLI, Terraform을 사용하여 워커 노드 풀과 별도로 사용자 클러스터의 제어 영역을 업그레이드할 수 있습니다.
Terraform을 사용하여 사용자 클러스터를 만든 경우에만 업그레이드에 Terraform을 사용할 수 있습니다.
gkectl
다음 자리표시자 변수에서 소스 버전과 대상 버전을 정의합니다. 모든 버전은
1.16.11-gke.25
와 같은x.y.z-gke.N
형식의 전체 버전 번호여야 합니다.버전 설명 SOURCE_VERSION
현재 클러스터 버전입니다. TARGET_VERSION
대상 버전을 선택합니다. 대상 마이너 버전에서 추천 패치를 선택합니다. 관리자 워크스테이션을 대상 버전으로 업그레이드합니다. 업그레이드가 완료되었다는 메시지가 표시될 때까지 기다립니다.
해당하는 OS 이미지를 vSphere로 가져옵니다.
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
ADMIN_CLUSTER_KUBECONFIG
를 관리자 클러스터kubeconfig
파일의 경로로 바꿉니다.사용자 클러스터 구성 파일을 다음과 같이 변경합니다.
gkeOnPremVersion
필드를 대상 버전TARGET_VERSION
로 설정합니다.업그레이드하려는 각 노드 풀에 대해
nodePools.nodePool[i].gkeOnPremVersion
필드를 빈 문자열로 설정합니다.- 버전 1.28 이상에서는
nodePools.nodePool[i].updateStrategy.rollingUpdate.maxSurge
필드를 1보다 큰 정수 값으로 설정하여 노드 풀 업그레이드 속도를 높일 수 있습니다.maxSurge
로 노드를 업그레이드하면 단일 노드를 업그레이드하는 데 걸리는 시간과 동일한 시간에 여러 노드가 업그레이드됩니다.
- 버전 1.28 이상에서는
업그레이드 하지 않을 각 노드 풀에 대해
nodePools.nodePool[i].gkeOnPremVersion
를 소스 버전인SOURCE_VERSION
로 설정합니다.
다음 예는 사용자 클러스터 구성 파일의 일부를 보여줍니다. 여기에서 제어 영역과
pool-1
이TARGET_VERSION
로 업그레이드되도록 지정하지만pool-2
는SOURCE_VERSION
로 유지됩니다.gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...
컨트롤 플레인과 선택한 노드 풀을 업그레이드합니다.
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE
USER_CLUSTER_CONFIG
를 사용자 클러스터 구성 파일의 경로로 바꿉니다.
추가 노드 풀 업그레이드
이전 예시를 사용하여 pool-1
를 사용하여 모든 요소가 제대로 작동하며, 이제 pool-2
를 업그레이드한다고 가정해 보겠습니다.
사용자 클러스터 구성 파일의
pool-2
아래에서gkeOnPremVersion
을 빈 문자열로 설정합니다.gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...
gkectl update cluster
를 실행하여 변경사항을 적용합니다.gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
gcloud CLI
사용자 클러스터를 업그레이드하려면 관리자 클러스터에 몇 가지 변경사항을 적용해야 합니다. gcloud container vmware clusters upgrade
명령어는 자동으로 다음을 수행합니다.
아직 등록되지 않았으면 GKE On-Prem API에 관리자 클러스터를 등록합니다.
구성요소 번들을 관리자 클러스터에 다운로드하고 배포합니다. 구성요소의 버전이 업그레이드에서 지정한 버전과 일치합니다. 이러한 구성요소를 통해 관리자 클러스터는 해당 버전의 사용자 클러스터를 관리할 수 있습니다.
컨트롤 플레인 업그레이드
사용자 클러스터의 컨트롤 플레인을 업그레이드하려면 다음 단계를 따르세요.
Google Cloud CLI 구성요소를 업데이트합니다.
gcloud components update
클러스터에서 업그레이드 정책을 변경합니다.
gcloud container vmware clusters update USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --upgrade-policy control-plane-only=True
다음을 바꿉니다.
USER_CLUSTER_NAME
: 업그레이드할 사용자 클러스터 이름PROJECT_ID
: 사용자 클러스터가 구성원인 Fleet 호스트 프로젝트의 ID. 이 프로젝트는 클러스터를 만들 때 지정된 프로젝트입니다.gkectl
을 사용하여 클러스터를 만들었으면 클러스터 구성 파일에서gkeConnect.projectID
필드의 프로젝트 ID입니다.REGION
: GKE On-Prem API가 메타데이터를 실행하고 저장하는 Google Cloud 리전입니다. GKE On-Prem API 클라이언트를 사용하여 클러스터를 만든 경우 이 리전은 클러스터를 만들 때 선택한 리전입니다.gkectl
을 사용하여 클러스터를 만든 경우 이 리전은 GKE On-Prem API에 클러스터를 등록할 때 지정한 리전입니다.
클러스터의 제어 영역을 업그레이드합니다.
gcloud container vmware clusters upgrade USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --version=TARGET_VERSION
TARGET_VERSION
을 업그레이드할 버전으로 바꿉니다. 대상 마이너 버전에서 추천 패치를 선택합니다.명령어 출력은 다음과 비슷합니다.
Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
예시 출력에서
operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
문자열은 장기 실행 작업의 OPERATION_ID입니다. 다른 터미널 창에서 다음 명령어를 실행하여 작업 상태를 찾을 수 있습니다.gcloud container vmware operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=REGION
노드 풀 업그레이드
사용자 클러스터의 컨트롤 플레인이 업그레이드된 후 노드 풀을 업그레이드하려면 다음 단계를 따르세요.
사용자 클러스터의 노드 풀 목록을 가져옵니다.
gcloud container vmware node-pools list --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION
업그레이드하려는 각 노드 풀에 대해 다음 명령어를 실행합니다.
gcloud container vmware node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --version=TARGET_VERSION
Terraform
Google Cloud CLI 구성요소를 업데이트합니다.
gcloud components update
아직 수행하지 않았으면 GKE On-Prem API에 관리자 클러스터를 등록합니다.. GKE On-Prem API에 클러스터를 등록한 다음에는 이 단계를 다시 수행할 필요가 없습니다.
새 버전의 구성요소를 다운로드하고 관리자 클러스터에 배포합니다.
gcloud vmware admin-clusters update ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --required-platform-version=TARGET_VERSION
다음을 바꿉니다.
USER_CLUSTER_NAME
: 업그레이드할 사용자 클러스터 이름PROJECT_ID
: 사용자 클러스터가 구성원인 Fleet 호스트 프로젝트의 ID. 이 프로젝트는 클러스터를 만들 때 지정된 프로젝트입니다.gkectl
을 사용하여 클러스터를 만들었으면 클러스터 구성 파일에서gkeConnect.projectID
필드의 프로젝트 ID입니다.REGION
: GKE On-Prem API가 메타데이터를 실행하고 저장하는 Google Cloud 리전입니다. GKE On-Prem API 클라이언트를 사용하여 클러스터를 만든 경우 이 리전은 클러스터를 만들 때 선택한 리전입니다.gkectl
을 사용하여 클러스터를 만든 경우 이 리전은 GKE On-Prem API에 클러스터를 등록할 때 지정한 리전입니다.TARGET_VERSION
: 업그레이드할 버전입니다. 타겟 마이너 버전에서 권장 패치를 선택합니다.
이 명령어는
--required-platform-version
에 지정하는 구성요소 버전을 관리자 클러스터에 다운로드한 후 구성요소를 배포합니다. 이러한 구성요소를 통해 관리자 클러스터는 해당 버전의 사용자 클러스터를 관리할 수 있습니다.사용자 클러스터를 만드는 데 사용한
main.tf
파일에서 클러스터 리소스의on_prem_version
을 새 버전으로 변경합니다.컨트롤 플레인만 업그레이드되도록 클러스터 리소스에 다음을 추가합니다.
upgrade_policy { control_plane_only = true }
Terraform 계획을 초기화하고 만듭니다.
terraform init
Terraform은 Google Cloud
구성을 검토하고 필요한 경우 변경합니다.
terraform plan
Terraform 계획을 적용하여 사용자 클러스터를 만듭니다.
terraform apply
노드 풀 업그레이드
사용자 클러스터의 컨트롤 플레인이 업그레이드된 후 노드 풀을 업그레이드하려면 다음 단계를 따르세요.
업그레이드하려는 각 노드 풀에서 리소스의
main.tf
에 다음을 추가합니다.on_prem_version = "TARGET_VERSION"
예를 들면 다음과 같습니다.
resource "google_gkeonprem_vmware_node_pool" "nodepool-basic" { name = "my-nodepool" location = "us-west1" vmware_cluster = google_gkeonprem_vmware_cluster.default-basic.name config { replicas = 3 image_type = "ubuntu_containerd" enable_load_balancer = true } on_prem_version = "1.16.0-gke.0" }
Terraform 계획을 초기화하고 만듭니다.
terraform init
구성을 검토하고 필요한 경우 변경합니다.
terraform plan
Terraform 계획을 적용하여 사용자 클러스터를 만듭니다.
terraform apply
문제 해결
노드 풀을 업그레이드한 후 문제가 발생하면 이전 버전으로 롤백할 수 있습니다. 자세한 내용은 업그레이드 후 노드 풀 롤백을 참고하세요.