이 문서에서는 Google Kubernetes Engine (GKE) 클러스터의 컨트롤 플레인 또는 노드에 대한 업그레이드 또는 다운그레이드를 수동으로 요청하는 방법을 설명합니다. GKE는 클러스터에 새 기능, 버그 수정, 보안 패치가 적용되도록 컨트롤 플레인 및 노드의 버전을 자동으로 업그레이드합니다. 하지만 이 문서에 설명된 대로 이러한 업그레이드를 직접 수동으로 실행할 수도 있습니다.
자동 및 수동 클러스터 업그레이드 작동 방식에 대한 자세한 내용은 GKE 클러스터 업그레이드 정보를 참고하세요. 유지보수 기간 및 제외를 구성하여 자동 업그레이드 가능 여부를 제어할 수도 있습니다.
다음과 같이 버전을 수동으로 업그레이드할 수 있습니다.
- Autopilot 클러스터: 컨트롤 플레인 버전 업그레이드
- Standard 클러스터: 컨트롤 플레인 버전 및 노드 풀 버전을 업그레이드합니다.
클러스터를 업그레이드하기 위해 GKE는 별도의 작업으로 컨트롤 플레인과 노드가 실행되는 버전을 업데이트합니다. 클러스터는 최신 마이너 버전 (예: 1.33~1.34) 또는 최신 패치 버전 (예: 1.33.4-gke.1350000~1.33.5-gke.1080000)으로 업그레이드됩니다. 클러스터의 컨트롤 플레인과 노드가 항상 동일한 버전을 실행하지는 않습니다. 버전에 관한 자세한 내용은 GKE 버전 관리 및 지원을 참고하세요.
자동 및 수동 업그레이드를 비롯한 클러스터 업그레이드 작동 방식에 대한 자세한 내용은 GKE 클러스터 업그레이드 정보를 참고하세요.
새 버전의 GKE는 정기적으로 발표됩니다. 클러스터 알림을 사용하면 각 특정 클러스터에 사용할 수 있는 새 버전에 대한 알림을 받을 수 있습니다. 클러스터의 특정 자동 업그레이드 대상을 찾으려면 클러스터 업그레이드에 대한 정보를 가져옵니다.
사용 가능한 버전에 대한 자세한 내용은 버전 관리를 참고하세요. 클러스터에 대한 자세한 내용은 클러스터 아키텍처를 참고하세요. 클러스터 업그레이드에 대한 안내는 클러스터 업그레이드 권장사항을 참고하세요.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치했으면
gcloud components update명령어를 실행하여 최신 버전을 가져옵니다. 이전 gcloud CLI 버전에서는 이 문서의 명령어를 실행하지 못할 수 있습니다.
- 기존 Autopilot 또는 Standard 클러스터가 있는지 확인합니다. 새 클러스터를 만들려면 Autopilot 클러스터 만들기를 참고하세요.
업그레이드 정보
클러스터의 컨트롤 플레인과 노드는 별개로 업그레이드됩니다. 클러스터의 컨트롤 플레인과 노드가 항상 동일한 버전을 실행하지는 않습니다.
클러스터 컨트롤 플레인과 노드는 클러스터가 출시 채널에 등록되었는지 여부에 관계없이 정기적으로 업그레이드됩니다.
제한사항
알파 클러스터는 업그레이드할 수 없습니다.
지원되는 버전
출시 노트는 새 버전의 출시 시기 및 이전 버전의 사용 중단 시기를 안내합니다. 언제든지 다음 명령어를 사용하여 지원되는 클러스터 및 노드 버전의 전체 목록을 확인할 수 있습니다.
gcloud container get-server-config \
--location=CONTROL_PLANE_LOCATION
CONTROL_PLANE_LOCATION을 컨트롤 플레인의 위치(리전 또는 영역)(예: us-central1 또는 us-central1-a)로 바꿉니다.
클러스터가 출시 채널에 등록되면 컨트롤 플레인과 동일한 부 버전으로 다른 출시 채널의 패치 버전으로 업그레이드할 수 있습니다. 예를 들어 클러스터를 일반 채널의 버전 1.33.4-gke.1350000에서 신속 채널의 버전 1.33.5-gke.1162000으로 업그레이드할 수 있습니다. 자세한 내용은 최신 채널에서 패치 버전 실행을 참고하세요. 모든 Autopilot 클러스터는 출시 채널에 등록됩니다.
다운그레이드 정보
특정 시나리오에서는 클러스터 버전을 이전 버전으로 다운그레이드할 수 있습니다.
- 컨트롤 플레인 패치 다운그레이드: 실패한 클러스터 컨트롤 플레인 업그레이드를 완화하기 위해 버전이 동일한 부 버전 내의 이전 패치 출시 버전인 경우 컨트롤 플레인을 이전 패치 출시 버전으로 다운그레이드할 수 있습니다. 예를 들어 클러스터의 컨트롤 플레인이 GKE 1.33.5-gke.1080000을 실행하는 경우 해당 버전을 계속 사용할 수 있으면 컨트롤 플레인을 1.33.4-gke.1350000으로 다운그레이드할 수 있습니다.
- 2단계 컨트롤 플레인 부 버전 업그레이드 중 롤백(미리보기): 롤백 안전 기능이 있는 2단계 컨트롤 플레인 부 버전 업그레이드의 바이너리 업그레이드 후에만 Kubernetes 클러스터 컨트롤 플레인을 이전 부 버전으로 다운그레이드할 수 있습니다. GKE에서 2단계 업그레이드의 두 번째 단계인 에뮬레이트된 버전 업그레이드를 이미 완료한 경우 이전 마이너 버전으로 롤백할 수 없습니다.
- 노드 풀 롤백: 부분적으로 완료된 노드 풀 업그레이드를 이전 패치 출시 버전 또는 마이너 버전으로 롤백할 수 있습니다.
- 노드 풀 다운그레이드: 예를 들어 워크로드에 문제를 일으킨 완료된 노드 풀 업그레이드를 되돌리기 위해 노드 풀을 이전 패치 출시 버전 또는 마이너 버전으로 다운그레이드할 수 있습니다. 클러스터 컨트롤 플레인 버전보다 마이너 버전 세 개 이상 낮은 버전으로 노드를 다운그레이드하지 않도록 합니다.
이전 항목에 설명된 시나리오 외에는 클러스터를 다운그레이드할 수 없습니다. 단일 단계 컨트롤 플레인 부 버전 업그레이드 후를 포함하여 클러스터 컨트롤 플레인을 이전 부 버전으로 다운그레이드할 수 없습니다. 예를 들어 컨트롤 플레인에서 GKE 버전 1.34를 실행하는 경우 1.33으로 다운그레이드할 수 없습니다. 이를 수행하려고 시도하면 다음 오류 메시지가 표시됩니다.
ERROR: (gcloud.container.clusters.upgrade) ResponseError: code=400,
message=Master cannot be upgraded to "1.33.4-gke.1350000": specified version is
not newer than the current version.
새 부 버전을 사용할 수 있게 되었지만 해당 버전이 클러스터의 자동 업그레이드 대상이 되기 전에 테스트 환경의 클러스터에서 마이너 버전 업그레이드를 테스트하고 검증하는 것이 좋습니다. 특히 지원 중단된 API 또는 기능이 삭제되는 등 다음 마이너 버전의 중요 변경사항으로 인해 클러스터가 영향을 받을 수 있는 경우에 권장됩니다. 버전 사용 가능 여부에 대한 자세한 내용은 채널에서 사용할 수 있는 버전을 참고하세요.
클러스터의 컨트롤 플레인 업그레이드
GKE는 클러스터의 컨트롤 플레인과 노드를 자동으로 업그레이드합니다. GKE에서 클러스터를 업그레이드하는 방식을 관리하려면 클러스터 업그레이드 제어를 참고하세요.
Autopilot 클러스터 및 리전 Standard 클러스터의 경우 컨트롤 플레인 업그레이드 중에 컨트롤 플레인을 계속 사용할 수 있습니다. 하지만 영역 클러스터의 컨트롤 플레인 업그레이드를 시작하면 몇 분 후에 컨트롤 플레인에 다시 액세스할 수 있을 때까지 클러스터의 구성을 수정할 수 없습니다. 컨트롤 플레인 업그레이드 중에도 워커 노드를 계속 사용할 수 있으므로 컨트롤 플레인 업그레이드는 워크로드가 실행되는 워커 노드의 가용성에는 영향을 미치지 않습니다.
클러스터 버전을 관리하는 과정에서 새 버전이 출시된 후 언제든지 다음 방법 중 하나를 사용하여 수동 업그레이드를 시작할 수 있습니다.
- 원스텝 업그레이드: 가능한 한 빨리 컨트롤 플레인을 최신 마이너 버전 또는 패치 버전으로 직접 업그레이드합니다. 새 마이너 버전에서 클러스터 및 워크로드 성능을 이미 검증한 경우 이 방법을 사용할 수 있습니다.
- 롤백 안전 기능이 있는 2단계 컨트롤 플레인 마이너 업그레이드 (미리보기): 일정 기간 동안 새 마이너 버전을 검증하고 필요한 경우 롤백할 수 있는 2단계 프로세스를 사용하여 컨트롤 플레인을 최신 마이너 버전으로 업그레이드합니다. 이 업그레이드 방법은 수동 마이너 컨트롤 플레인 업그레이드의 경우 1.33 이상으로 업그레이드하는 데만 사용할 수 있습니다.
원스텝 업그레이드로 컨트롤 플레인 수동 업그레이드
Cloud de Confiance 콘솔이나 Google Cloud CLI를 사용하여 Autopilot 또는 Standard 컨트롤 플레인을 수동으로 업그레이드할 수 있습니다.
콘솔
클러스터 컨트롤 플레인을 수동으로 업그레이드하려면 다음 단계를 수행합니다.
Cloud de Confiance 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
클러스터 이름을 클릭합니다.
클러스터 기본 사항에서 버전 옆에 있는 edit 사용 가능한 업그레이드를 클릭합니다.
새 버전을 선택한 후 변경사항 저장을 클릭합니다.
gcloud
클러스터의 컨트롤 플레인에 사용 가능한 버전을 보려면 다음 명령어를 실행합니다.
gcloud container get-server-config \
--location=CONTROL_PLANE_LOCATION
기본 클러스터 버전으로 업그레이드하려면 다음 명령어를 실행합니다.
gcloud container clusters upgrade CLUSTER_NAME \
--master \
--location=CONTROL_PLANE_LOCATION
기본값이 아닌 특정 버전으로 업그레이드하려면 다음 명령어와 같이 --cluster-version 플래그를 지정합니다.
gcloud container clusters upgrade CLUSTER_NAME \
--master \
--location=CONTROL_PLANE_LOCATION \
--cluster-version=VERSION
VERSION을 클러스터를 업그레이드하려는 버전으로 바꿉니다. 1.32.9-gke.1072000과 같은 특정 버전을 사용하거나 latest와 같은 버전 별칭을 사용할 수 있습니다. 자세한 내용은 클러스터 버전 지정을 참고하세요.
표준 컨트롤 플레인을 업그레이드하면 노드를 업그레이드할 수 있습니다. 기본적으로 Cloud de Confiance 콘솔을 사용하여 만든 표준 노드에는 자동 업그레이드가 사용 설정되어 있으므로 표준 노드가 자동으로 업그레이드됩니다. Autopilot은 항상 노드를 자동으로 업그레이드합니다.
롤백 안전 기능이 있는 2단계 컨트롤 플레인 마이너 업그레이드
2단계 업그레이드를 통해 GKE Autopilot 또는 Standard 클러스터의 컨트롤 플레인을 다음 마이너 버전으로 수동으로 업그레이드할 수 있습니다. 이 2단계 프로세스에서는 에뮬레이션된 버전이라고 하는 이전 부 버전의 기능과 API를 사용하는 동안 바이너리 버전이라고 하는 새 부 버전으로 클러스터가 어떻게 작동하는지 테스트할 수 있습니다. 이 적응 시간 동안 컨트롤 플레인이 에뮬레이션된 모드로 실행되며, 필요한 경우 이전 마이너 버전으로 롤백할 수 있습니다. Kubernetes에서 이러한 유형의 업그레이드를 허용하는 방법에 대한 자세한 내용은 Kubernetes 컨트롤 플레인 구성요소의 호환성 버전을 참고하세요.2단계 업그레이드는 다음과 같은 방식으로 작동합니다.
바이너리 업그레이드: GKE는 컨트롤 플레인 바이너리를 새 마이너 버전으로 업그레이드하지만 이전 마이너 버전을 에뮬레이션합니다.
- 이전 버전 에뮬레이션: 클러스터가 새 바이너리를 실행하지만 이전 마이너 버전 API의 동작을 계속 에뮬레이션합니다. 예를 들어 새 마이너 버전에서 삭제되었지만 이전 마이너 버전에서는 계속 사용할 수 있는 API를 호출할 수 있습니다.
- 새 바이너리 테스트: 새 마이너 버전에서 사용할 수 있는 Kubernetes 기능을 액세스 가능하게 만들기 전에 회귀, 수정, 성능 변경사항에 대해 새 바이너리를 테스트할 수 있습니다. 애플리케이션 측정항목, 로그, 포드 상태, 오류율, 지연 시간을 모니터링합니다.
- 변경사항 적용: 테스트하고 모니터링할 시간을 확보하기 위해 6시간에서 7일 동안 기다립니다. 이 시간이 지나면 GKE는 에뮬레이트된 버전 업그레이드를 실행합니다.
- 업그레이드 롤백 또는 완료: 필요한 경우 롤백할 수 있습니다. 또는 새 마이너 버전에 자신이 있고, 적응 시간이 완료될 때까지 기다리고 싶지 않으며, 새 기능과 API 변경사항을 사용할 준비가 되었다면 다음 단계로 진행할 수 있습니다.
에뮬레이션된 버전 업그레이드: GKE가 에뮬레이션된 버전을 새 바이너리 버전과 일치하도록 업데이트합니다.
- 새로운 기능 사용 설정: 새 마이너 버전의 모든 새로운 기능과 API 변경사항이 사용 설정됩니다.
- 롤백 불가: 이 단계가 완료되면 원래 마이너 버전으로 롤백할 수 없습니다. 업그레이드가 완료되었습니다.
이 작업 중에는 다음 제한사항이 적용됩니다.
- 원스텝 컨트롤 플레인 부 버전 업그레이드는 시작할 수 없습니다.
- 에뮬레이션된 버전보다 최신 버전으로 노드를 만들거나 업그레이드할 수 없습니다.
- GKE는 컨트롤 플레인이나 노드에 어떤 유형의 자동 업그레이드도 실행하지 않습니다.
2단계 업그레이드 시작
다음 명령어를 실행하여 2단계 업그레이드를 시작합니다.
gcloud beta container clusters upgrade CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--cluster-version VERSION \
--control-plane-soak-duration SOAK_DURATION \
--master
다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름입니다.CONTROL_PLANE_LOCATION: 컨트롤 플레인의 위치(리전 또는 영역)(예:us-central1또는us-central1-a)VERSION: 다음 마이너 버전의 특정 패치입니다. 예를 들어 클러스터가 1.33을 실행하는 경우1.34.1-gke.1829001입니다.SOAK_DURATION: 롤백 안전 단계에서 대기할 시간입니다.gcloud topic datetimes참조에 설명된 대로 절대 기간 형식을 사용하여 이 값을 최소 6시간에서 최대 7일까지 설정할 수 있습니다. 예를 들어 2일 1시간의 적응 시간은2d1h를 사용합니다.
2단계 업그레이드 중에 새 바이너리 테스트
적응 시간 동안 새 바이너리를 실행하는 컨트롤 플레인이 있는 클러스터와 워크로드가 예상대로 작동하는지 확인합니다. 워크로드가 새 바이너리와 호환되는지 확인할 수 있는지 여부에 따라 다음 단계 중 하나를 수행할 수 있습니다.
- 롤백: 새 바이너리에서 실행되는 워크로드에 문제가 있는 경우 이전 부 버전으로 롤백할 수 있습니다.
- 업그레이드 완료: 새 바이너리에서 워크로드가 문제없이 실행되는지 확인한 경우 새 버전의 기능과 API를 사용하려면 업그레이드를 완료하면 됩니다.
- 기다리기: 적응 시간이 경과할 때까지 기다릴 수도 있습니다. 그 후 GKE는 에뮬레이트된 버전 업그레이드를 실행하여 새 마이너 버전의 기능과 API를 사용하도록 전환합니다.
진행 중인 업그레이드 관찰
진행 중인 업그레이드에 대한 정보를 가져오려면 다음 리소스 중 하나를 사용하세요.
- 업그레이드에 관한 세부정보를 확인하려면 안내에 따라 클러스터 수준에서 업그레이드 정보 가져오기를 실행하세요.
- 클러스터 알림을 사용합니다. GKE는 바이너리 업그레이드가 시작되면
UpgradeEvent알림을 전송하고, 바이너리 업그레이드가 완료되고 적응 시간이 시작되면 업그레이드 작업이 완료됨 유형의UpgradeInfoEvent를 전송합니다. - 진행 중인 업그레이드를 포함하여 클러스터에 대한 세부정보를 확인하려면
gcloud container clusters describe명령어를 실행합니다. - Cloud Logging에서 관련 로그를 확인합니다.
바이너리 버전 업그레이드 후 2단계 업그레이드 롤백
2단계 업그레이드 중에 바이너리 버전 업그레이드 후에는 소킹 기간이 있습니다. 이 기간 동안 필요한 경우 이전 마이너 버전으로 롤백할 수 있습니다. GKE에서 에뮬레이션된 버전 업그레이드를 실행한 후에는 롤백할 수 없습니다.
롤백 작업이 완료되면 컨트롤 플레인이 2단계 업그레이드를 시작하기 전과 같이 이전 마이너 버전으로 실행됩니다.
가능한 경우 다음 단계에 따라 롤백하세요.
클러스터 수준에서 업그레이드 정보 가져오기에서 gcloud CLI 명령어를 실행하여 컨트롤 플레인을 이전 마이너 버전으로 롤백할 수 있는지 확인합니다. 명령어의 출력으로 롤백할 수 있는지 확인합니다.
- 출력에
rollbackSafeUpgradeStatus섹션이 있으면 롤백할 수 있습니다. 이 섹션에서 다음 단계의VERSION변수에 사용할previousVersion를 저장합니다. 다음 단계로 진행합니다. rollbackSafeUpgradeStatus섹션이 없으면 롤백할 수 없습니다. 이는 GKE가 이미 에뮬레이션된 버전 업그레이드를 실행했음을 나타냅니다. 다음 단계를 수행할 수 없습니다.
- 출력에
이전 단계에서 롤백이 가능한 것으로 확인된 경우 이전 버전으로 롤백합니다.
gcloud container clusters upgrade CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --cluster-version VERSION --masterVERSION는 이전에 사용한 정확한 패치 버전이어야 합니다. 이전 단계에서 이 버전을 저장했습니다.
이 명령어를 실행하고 이전 버전으로 다운그레이드한 후 새 바이너리에서 워크로드가 올바르게 실행되지 않은 이유를 확인할 수 있습니다. 필요한 경우 Cloud Customer Care에 문의하여 관련 로그, 오류 메시지, 발생한 유효성 검사 실패에 관한 세부정보를 제공할 수 있습니다. 자세한 내용은 지원 받기를 참고하세요.
문제를 해결한 후 새 부 버전으로 다시 수동 업그레이드할 수 있습니다.
2단계 업그레이드 완료
소킹 기간 동안 새 바이너리로 워크로드가 성공적으로 실행되는지 확인한 경우 나머지 적응 시간을 건너뛸 수 있습니다.
gcloud beta container clusters clusters complete-control-plane-upgrade CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
이 명령어를 실행한 후에는 이전 부 버전으로 다운그레이드할 수 없습니다.
컨트롤 플레인을 이전 패치 버전으로 다운그레이드
- 다운그레이드한 후 GKE가 컨트롤 플레인을 자동으로 업그레이드하지 못하도록 다운그레이드하기 전에 유지보수 제외를 설정합니다.
클러스터 컨트롤 플레인을 이전 패치 버전으로 다운그레이드합니다.
gcloud container clusters upgrade CLUSTER_NAME \ --master \ --location=CONTROL_PLANE_LOCATION \ --cluster-version=VERSION
클러스터 자동 업그레이드 중지
인프라 보안은 GKE에서 높은 우선순위로, 이러한 컨트롤 플레인이 정기적으로 업그레이드되며 중지할 수 없습니다. 그러나 유지보수 기간 및 제외를 적용하여 컨트롤 플레인과 노드의 업그레이드를 일시적으로 정지할 수 있습니다.
권장되지는 않지만 표준 노드 풀에 대해 노드 자동 업그레이드를 사용 중지할 수 있습니다.
최근 컨트롤 플레인 업그레이드 기록 확인
클러스터의 최근 자동 업그레이드 기록 스냅샷을 보려면 클러스터 업그레이드에 대한 정보를 가져옵니다.
또는 최근 작업을 표시하여 컨트롤 플레인이 업그레이드된 시기를 확인할 수 있습니다.
gcloud container operations list --filter="TYPE:UPGRADE_MASTER AND TARGET:CLUSTER_NAME" \
--location=CONTROL_PLANE_LOCATION
노드 풀 업그레이드
기본적으로 표준 노드 풀에는 자동 업그레이드가 사용 설정되어 있으며 표준 클러스터의 모든 Autopilot 관리 노드 풀에는 항상 자동 업그레이드가 사용 설정되어 있습니다. 노드 자동 업그레이드를 통해 클러스터의 컨트롤 플레인과 노드 버전이 동기화 상태를 유지하고 Kubernetes 버전 차이 정책을 준수할 수 있으므로 컨트롤 플레인은 부 버전이 최대 두 버전 낮은 컨트롤 플레인과 호환됩니다. 예를 들어 Kubernetes 1.34 컨트롤 플레인은 Kubernetes 1.32 노드와 호환됩니다. 기본적으로 GKE는 한 번에 하나의 노드 풀만 자동으로 업그레이드합니다. 여러 노드 풀을 동시에 자동으로 업그레이드하려면 동시 노드 풀 업그레이드(미리보기)를 구성하면 됩니다.
클러스터가 이전 단락에 나열된 업그레이드 혜택을 누릴 수 있도록 Standard 노드 풀에서 노드 자동 업그레이드를 사용 중지하지 마세요.
GKE Standard 노드 풀 업그레이드를 사용하면 일시 급증 업그레이드, 블루-그린 업그레이드, 자동 확장된 블루-그린 업그레이드(미리보기)를 비롯한 세 가지 구성 가능한 업그레이드 전략 중에서 선택할 수 있습니다. 표준 클러스터의 Autopilot 관리 노드 풀은 항상 일시 급증 업그레이드를 사용합니다.
Standard 노드 풀의 경우 전략을 선택하고 매개변수를 사용하여 전략을 조정하여 클러스터 환경의 요구사항에 가장 잘 맞게 조정합니다.
노드 업그레이드 작동 방식
노드가 업그레이드되는 동안 GKE는 새 Pod의 예약을 중지하고 실행 중인 Pod를 다른 노드에 예약합니다. 이는 노드 풀에서 기능을 사용 또는 사용 중지하는 것과 같이 노드를 다시 만드는 다른 이벤트와 유사합니다.
자동 또는 수동 노드 업그레이드 중에는 PodDisruptionBudget(PDB) 및 포드 종료 유예 기간이 최대 1시간 동안 적용됩니다. 노드에서 실행 중인 포드를 1시간 내에 새 노드에 예약할 수 없어도 GKE에서 업그레이드를 시작합니다. 이 동작은 maxUnavailable 필드를 0 또는 0%로 설정하거나 minAvailable 필드를 100% 또는 복제본 수로 설정하여 항상 모든 복제본을 사용할 수 있도록 PDB를 구성하는 경우에도 적용됩니다. 이 모든 시나리오에서 GKE는 노드 삭제가 가능하도록 1시간 후에 포드를 삭제합니다.
표준 노드 풀에서 실행되는 워크로드에 단계적 종료의 유연성이 더 필요한 경우 추가 적응 시간 설정을 제공하는 블루-그린 업그레이드를 사용하여 PDB 검사를 1시간 기본값 이상으로 연장합니다.
일반적으로 노드 종료 시 예상 결과에 대한 자세한 내용은 포드 관련 주제를 참조하세요.
모든 노드가 다시 생성되고 클러스터가 새 상태가 될 때 업그레이드가 완료됩니다. 새로 업그레이드된 노드가 컨트롤 플레인에 등록되면 GKE는 노드를 예약 가능으로 표시합니다.
새 노드 인스턴스는 새 Kubernetes 버전뿐만 아니라 다음 항목을 실행합니다.
노드 풀 업그레이드가 완료된 것으로 간주되려면 노드 풀의 모든 노드를 다시 만들어야 합니다. 업그레이드가 시작되었지만 완료되지 않고 부분적으로 업그레이드된 상태이면 노드 풀 버전에 모든 노드의 버전이 반영되지 않을 수 있습니다. 자세한 내용은 불완전한 노드 풀 업그레이드 후 일부 노드 버전이 노드 풀 버전과 일치하지 않음을 참고하세요. 노드 풀 업그레이드가 완료되었는지 확인하려면 노드 풀 업그레이드 상태를 확인합니다. 업그레이드 작업이 보관 기간을 초과한 경우 각 개별 노드 버전이 노드 풀 버전과 일치하는지 확인합니다.
업그레이드하기 전에 영구 디스크에 데이터 저장
보존해야 하는 모든 데이터가 영구 디스크를 사용하는 영구 볼륨을 통해 포드에 저장되어 있는지 확인한 후에 노드 풀을 업그레이드해야 합니다. 업그레이드 중에는 영구 디스크가 삭제되는 것이 아니라 마운트 해제되고, 데이터는 다른 Pod로 전송됩니다.
영구 디스크와 관련된 제한사항은 다음과 같습니다.
- 포드가 실행되는 노드는 Compute Engine VM이어야 합니다.
- 이러한 VM은 영구 디스크와 동일한 Compute Engine 프로젝트 및 영역에 있어야 합니다.
기존 노드 인스턴스에 영구 디스크를 추가하는 방법은 Compute Engine 문서의 영역 영구 디스크 추가 또는 크기 조절을 참고하세요.
노드 풀 수동 업그레이드
Standard 클러스터에서 Standard 노드 풀 또는 Autopilot 관리 노드 풀의 버전을 수동으로 업그레이드할 수 있습니다. 컨트롤 플레인 버전과 일치시키거나 계속 지원 중이며 컨트롤 플레인과 호환되는 이전 버전을 사용할 수 있습니다. 동시 노드 풀 업그레이드를 구성하는 경우 GKE가 여러 노드 풀을 동시에 업그레이드할 수 있는 것과 마찬가지로 여러 노드 풀을 동시에 수동으로 업그레이드할 수 있습니다.
GKE가 노드 풀을 수동 또는 자동으로 업그레이드하면 GKE는 kubectl을 사용하여 개별 노드에 추가한 라벨을 삭제합니다.
노드를 다시 만드는 GKE 클러스터의 다른 유형의 변경사항도 라벨을 삭제합니다. 라벨이 손실되지 않도록 하려면 대신 노드 풀에 라벨을 적용하세요.
노드 풀을 수동으로 업그레이드하기 전에 다음 조건을 고려하세요.
- 노드 풀을 업그레이드하면 해당 노드 풀에서 실행 중인 작업이 중단될 수 있습니다. 이를 방지하기 위해서는 필요한 버전으로 새 노드 풀을 만들고 워크로드를 마이그레이션하면 됩니다. 마이그레이션 후 이전 노드 풀을 삭제할 수 있습니다.
- 오류 상태의 인그레스로 노드 풀을 업그레이드하면 인스턴스 그룹이 동기화되지 않습니다. 이 문제를 해결하려면 먼저
kubectl get ing명령어를 사용하여 상태를 확인합니다. 인스턴스 그룹이 동기화되지 않은 경우 인그레스를 만드는 데 사용된 매니페스트를 다시 적용하여 문제를 해결할 수 있습니다.
컨트롤 플레인과 호환되는 버전으로 노드 풀을 수동으로 업그레이드할 수 있습니다.
- Standard 노드 풀의 경우 Cloud de Confiance 콘솔 또는 Google Cloud CLI를 사용할 수 있습니다.
Autopilot 관리 노드 풀의 경우 Google Cloud CLI만 사용할 수 있습니다.
콘솔
Cloud de Confiance 콘솔을 사용하여 표준 노드 풀을 업그레이드하려면 다음 단계를 수행합니다.
Cloud de Confiance 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
클러스터 이름을 클릭합니다.
클러스터 세부정보 페이지에서 노드 탭을 클릭합니다.
노드 풀 섹션에서 업그레이드하려는 노드 풀의 이름을 클릭합니다.
edit 수정을 클릭합니다.
노드 버전에서 변경을 클릭합니다.
노드 버전 드롭다운 목록에서 필요한 버전을 선택한 후 변경을 클릭합니다.
노드 버전이 변경되는 데 몇 분 정도 걸릴 수 있습니다.
gcloud
이 섹션의 명령어에는 다음 변수가 사용됩니다.
CLUSTER_NAME: 업그레이드할 노드 풀의 클러스터의 이름NODE_POOL_NAME: 업그레이드할 노드 풀의 이름CONTROL_PLANE_LOCATION: 컨트롤 플레인의 위치(리전 또는 영역)(예:us-central1또는us-central1-a)VERSION: 노드가 업그레이드되는 Kubernetes 버전. 예를 들면--cluster-version=1.34.1-gke.1293000또는cluster-version=latest입니다.
노드 풀 업그레이드:
gcloud container clusters upgrade CLUSTER_NAME \
--node-pool=NODE_POOL_NAME \
--location=CONTROL_PLANE_LOCATION
노드에서 GKE의 다른 버전을 지정하려면 선택사항인 --cluster-version 플래그를 사용합니다.
gcloud container clusters upgrade CLUSTER_NAME \
--node-pool=NODE_POOL_NAME \
--location=CONTROL_PLANE_LOCATION \
--cluster-version VERSION
버전 지정에 대한 자세한 내용은 버전 관리를 참고하세요.
자세한 내용은 gcloud container clusters upgrade 문서를 참조하세요.
노드 풀 다운그레이드
GKE에서 노드 풀 업그레이드를 완료한 경우 노드 풀을 다운그레이드할 수 있습니다. GKE는 부분적으로 업그레이드된 노드 풀을 다운그레이드할 수 없으며 롤백만 가능합니다. 부분적으로 업그레이드된 노드 풀의 다운그레이드를 트리거하려고 하면 GKE가 해당 작업으로 노드 풀의 노드를 업데이트하지 않습니다. 노드 풀이 완전히 업그레이드되지 않아 롤백만 가능한지 확인하려면 먼저 노드 풀 업그레이드 상태를 확인합니다. 업그레이드가 취소되거나 실패한 경우 노드 풀의 노드를 확인하여 이전 버전을 실행하는 노드가 아직 있는지 확인하여 노드 풀 업그레이드가 완료되지 않았는지 확인할 수 있습니다.
노드 풀 업그레이드가 완료되지 않았고 업그레이드된 노드를 이전 버전으로 롤백하려면 노드 풀 업그레이드 롤백 안내를 따르세요. 노드 풀 업그레이드가 완료되었는데 워크로드에 문제가 발생하여 업그레이드를 되돌리려면 이 섹션의 안내에 따라 노드 풀을 이전 버전으로 다운그레이드하면 됩니다. 노드 풀을 다운그레이드하기 전에 제한사항을 검토하세요.
워크로드에 영향을 미치는 노드 풀 업그레이드의 위험 완화를 최적화해야 하는 경우 블루-그린 노드 업그레이드 전략을 사용하세요. 이 전략을 사용하면 업그레이드가 실패할 경우 진행 중인 업그레이드를 원래 노드로 롤백할 수 있습니다.
- 다운그레이드 후 GKE에서 노드 풀을 자동으로 업그레이드하지 못하도록 클러스터에 유지보수 제외를 설정합니다.
- 이전 버전으로 다운그레이드하려면 노드 풀 수동 업그레이드 단계를 따르고 이전 버전을 지정합니다.
일시 급증 업그레이드 매개변수 변경
일시 급증 업그레이드 매개변수 변경에 관한 자세한 내용은 일시 급증 업그레이드 구성을 참고하세요.
동시 노드 풀 업그레이드 구성
기본적으로 GKE는 한 번에 하나의 노드 풀을 자동으로 업그레이드합니다. 노드 풀이 많은 클러스터의 경우 동시 노드 풀 업그레이드를 구성하여 클러스터 업그레이드에 필요한 총 시간을 줄일 수 있습니다. GKE가 동시에 자동 업그레이드할 수 있는 최대 노드 풀 수를 설정하여 이를 구성합니다. Standard 클러스터에서 이 설정은 Standard 노드 풀 및 Autopilot 관리형 노드 풀의 노드 업그레이드 동시성을 결정합니다. Autopilot 클러스터에서 이 설정은 노드 그룹의 노드 업그레이드 동시성을 결정합니다.
gcloud CLI를 사용하여 새 클러스터를 만들거나 기존 클러스터를 업데이트할 때 동시 실행 제한을 구성할 수 있습니다. 동시에 자동 업그레이드할 노드 풀에 자동 업그레이드가 사용 설정되어 있는지 확인합니다.
맞춤 단계가 있는 출시 시퀀스 (미리보기)에 등록된 클러스터에는 이 기능을 사용 설정할 수 없습니다.
동시 노드 풀 업그레이드를 구성하려면 다음 명령어 중 하나를 실행합니다.
동시 노드 풀 업그레이드가 구성된 새 클러스터를 만듭니다.
gcloud beta container clusters create CLUSTER_NAME \ --project=PROJECT_NAME --location CONTROL_PLANE_LOCATION \ --node-pool-upgrade-concurrency-config=max-count=MAX_COUNT노드 풀을 동시에 업그레이드하도록 기존 클러스터를 업데이트합니다.
gcloud beta container clusters update CLUSTER_NAME \ --project=PROJECT_NAME \ --location=CONTROL_PLANE_LOCATION \ --node-pool-upgrade-concurrency-config=max-count=MAX_COUNT
다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름입니다.PROJECT_NAME: 프로젝트의 이름LOCATION: 클러스터의 컴퓨팅 위치입니다.MAX_COUNT: 동시에 업그레이드할 노드 풀의 최대 수입니다. 값은1에서100사이의 정수여야 합니다. 기본 순차 동작으로 되돌리려면 이 값을1로 설정합니다.
노드 풀 업그레이드 상태 확인
gcloud container operations를 사용하여 업그레이드 상태를 확인할 수 있습니다.
작업이 5,000개 미만인 경우 지난 12일 동안 클러스터에서 실행 중인 작업과 완료된 작업의 목록을 보거나 지난 5,000개 작업의 목록을 봅니다.
gcloud container operations list \
--location=CONTROL_PLANE_LOCATION
각 작업에는 작업 ID와 작업 유형은 물론 시작 및 종료 시간, 대상 클러스터, 상태가 할당됩니다. 이 목록은 다음 예와 비슷하게 표시됩니다.
NAME TYPE ZONE TARGET STATUS_MESSAGE STATUS START_TIME END_TIME
operation-1505407677851-8039e369 CREATE_CLUSTER us-west1-a my-cluster DONE 20xx-xx-xxT16:47:57.851933021Z 20xx-xx-xxT16:50:52.898305883Z
operation-1505500805136-e7c64af4 UPGRADE_CLUSTER us-west1-a my-cluster DONE 20xx-xx-xxT18:40:05.136739989Z 20xx-xx-xxT18:41:09.321483832Z
operation-1505500913918-5802c989 DELETE_CLUSTER us-west1-a my-cluster DONE 20xx-xx-xxT18:41:53.918825764Z 20xx-xx-xxT18:43:48.639506814Z
특정 작업에 대한 자세한 정보를 보려면 다음 명령어에 표시된 대로 해당 작업 ID를 지정합니다.
gcloud container operations describe OPERATION_ID \
--location=CONTROL_PLANE_LOCATION
예를 들면 다음과 같습니다.
gcloud container operations describe operation-1507325726639-981f0ed6
endTime: '20xx-xx-xxT21:40:05.324124385Z'
name: operation-1507325726639-981f0ed6
operationType: UPGRADE_CLUSTER
selfLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/operations/operation-1507325726639-981f0ed6
startTime: '20xx-xx-xxT21:35:26.639453776Z'
status: DONE
targetLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/clusters/...
zone: us-central1-a
업그레이드가 취소되거나 실패하여 부분적으로 완료된 경우 업그레이드를 재개하거나 롤백할 수 있습니다.
노드 풀 업그레이드 설정 확인
gcloud container node-pools
describe 명령어를 사용하여 노드 풀에 사용 중인 노드 업그레이드 전략에 대한 세부정보를 참조할 수 있습니다. 블루-그린 업그레이드의 경우 명령어가 업그레이드의 현재 단계도 반환합니다.
다음 명령어를 실행합니다.
gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
다음을 바꿉니다.
NODE_POOL_NAME: 설명할 노드 풀 이름입니다.CLUSTER_NAME: 설명할 노드 풀의 클러스터 이름입니다.CONTROL_PLANE_LOCATION: 컨트롤 플레인의 위치(리전 또는 영역)입니다(예:us-central1또는us-central1-a).
이 명령어는 현재 업그레이드 설정을 출력합니다. 다음 예시에서는 블루-그린 업그레이드 전략을 사용 중인 경우의 출력을 보여줍니다.
upgradeSettings:
blueGreenSettings:
nodePoolSoakDuration: 1800s
standardRolloutPolicy:
batchNodeCount: 1
batchSoakDuration: 10s
strategy: BLUE_GREEN
블루-그린 업그레이드 전략을 사용하는 경우에는 출력에 블루-그린 업그레이드 설정 및 현재 중간 단계에 대한 세부정보도 포함됩니다. 다음 예시는 이와 같은 출력을 보여줍니다.
updateInfo:
blueGreenInfo:
blueInstanceGroupUrls:
- https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{BLUE_INSTANCE_GROUP_NAME}
bluePoolDeletionStartTime: {BLUE_POOL_DELETION_TIME}
greenInstanceGroupUrls:
- https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{GREEN_INSTANCE_GROUP_NAME}
greenPoolVersion: {GREEN_POOL_VERSION}
phase: DRAINING_BLUE_POOL
노드 풀 업그레이드 취소
언제든지 업그레이드를 취소할 수 있습니다. 일시 급증 업그레이드를 취소하면 어떻게 되는지에 관해 자세히 알아보려면 일시 급증 업그레이드 취소를 참조하세요. 블루-그린 업그레이드를 취소하면 어떻게 되는지에 관해 자세히 알아보려면 블루-그린 업그레이드 취소를 참조하세요.
업그레이드 작업 ID를 가져옵니다.
gcloud container operations list \ --location=CONTROL_PLANE_LOCATION업그레이드를 취소합니다.
gcloud container operations cancel OPERATION_ID \ --location=CONTROL_PLANE_LOCATION
gcloud container operations cancel 문서를 참조하세요.
노드 풀 업그레이드 재개
업그레이드 수동 시작을 다시 수행하고 원래 업그레이드에서 대상 버전을 지정하여 업그레이드를 재개할 수 있습니다.
예를 들어 업그레이드에 실패했거나 진행 중인 업그레이드를 일시중지한 경우 노드 풀에서 동일한 업그레이드를 다시 시작하고 초기 업그레이드 작업에서 대상 버전을 지정하여 취소된 업그레이드를 재개할 수 있습니다.
업그레이드를 재개하면 어떻게 되는지에 관해 자세히 알아보려면 일시 급증 업그레이드 재개 및 블루-그린 업그레이드를 참조하세요.
업그레이드를 재개하려면 다음 명령어를 사용합니다.
gcloud container clusters upgrade CLUSTER_NAME \
--node-pool=NODE_POOL_NAME \
--location=CONTROL_PLANE_LOCATION \
--cluster-version VERSION
다음을 바꿉니다.
NODE_POOL_NAME: 노드 풀 업그레이드를 재개하려는 노드 풀 이름CLUSTER_NAME: 업그레이드를 재개하려는 노드 풀의 클러스터 이름CONTROL_PLANE_LOCATION: 컨트롤 플레인의 위치(리전 또는 영역)(예:us-central1또는us-central1-a)VERSION: 취소된 노드 풀 업그레이드의 대상 버전
자세한 내용은 gcloud container clusters upgrade 문서를 참조하세요.
노드 풀 업그레이드 롤백
노드 풀을 롤백하여 업그레이드된 노드를 노드 풀 업그레이드가 시작되기 전의 원래 상태로 다운그레이드할 수 있습니다.
진행 중인 업그레이드가 취소되었거나 업그레이드가 실패했거나 유지보수 기간 타임아웃으로 인해 업그레이드가 완료되지 않은 경우 rollback 명령어를 사용합니다. 또는 버전을 지정하려면 안내에 따라 노드 풀을 다운그레이드합니다.
노드 풀 업그레이드를 롤백하면 어떻게 되는지에 관해 자세히 알아보려면 일시 급증 업그레이드 롤백 또는 블루-그린 업그레이드 롤백을 참조하세요.
업그레이드를 롤백하려면 다음 명령어를 실행하세요.
gcloud container node-pools rollback NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
다음을 바꿉니다.
NODE_POOL_NAME: 노드 풀 업그레이드를 롤백하려는 노드 풀의 이름CLUSTER_NAME: 업그레이드를 롤백하려는 노드 풀의 클러스터 이름CONTROL_PLANE_LOCATION: 컨트롤 플레인의 위치(리전 또는 영역)입니다(예:us-central1또는us-central1-a).
gcloud container node-pools rollback 문서를 참조하세요.
노드 풀 업그레이드 완료
블루-그린 업그레이드 전략을 사용하는 경우 적응 시간 중 노드 풀 업그레이드를 완료하고 나머지 배양 시간은 건너뛸 수 있습니다.
노드 풀 업그레이드 완료 방식을 알아보려면 노드 풀 업그레이드 완료를 참조하세요.
블루-그린 업그레이드 전략을 사용할 때 업그레이드를 완료하려면 다음 명령어를 실행합니다.
gcloud container node-pools complete-upgrade NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
다음을 바꿉니다.
NODE_POOL_NAME: 업그레이드를 완료할 노드 풀의 이름입니다.CLUSTER_NAME: 업그레이드를 완료할 노드 풀의 클러스터 이름입니다.CONTROL_PLANE_LOCATION: 컨트롤 플레인의 위치(리전 또는 영역)입니다(예:us-central1또는us-central1-a).
gcloud container node-pools complete-upgrade 문서를 참조하세요.
알려진 문제
추가 중단을 허용할 수 없도록 구성된 PodDisruptionBudget 객체가 있으면 반복된 시도 후 노드 업그레이드가 컨트롤 플레인 버전으로 업그레이드되지 않을 수 있습니다. 이러한 실패를 방지하려면 PodDisruptionBudget 구성을 지키면서 노드 드레이닝을 허용하도록 Deployment 또는 HorizontalPodAutoscaler를 수직 확장하는 것이 좋습니다.
중단을 허용하지 않는 모든 PodDisruptionBudget 객체를 보려면 다음 안내를 따르세요.
kubectl get poddisruptionbudget --all-namespaces -o jsonpath='{range .items[?(@.status.disruptionsAllowed==0)]}{.metadata.name}/{.metadata.namespace}{"\n"}{end}'
자동 업그레이드 시 문제가 발생할 수 있긴 하지만, 자동 업그레이드 프로세스는 노드를 강제로 업그레이드합니다. 그러나 업그레이드 시 PodDisruptionBudget을 위반하는 istio-system 네임 스페이스의 모든 노드에 대해 추가 시간이 소요됩니다.
문제 해결
문제 해결에 대한 자세한 내용은 클러스터 업그레이드 문제 해결을 참조하세요.
다음 단계
- 노드 업그레이드 전략 알아보기
- 클러스터 업그레이드에 대해 알아봅니다.
- 노드 자동 업그레이드에 대해 알아봅니다.
- 유지보수 기간 및 제외에 대해 알아봅니다.