노드 업그레이드 전략

이 문서에서는 Google Kubernetes Engine (GKE) 클러스터에서 사용할 수 있는 노드 업그레이드 전략을 설명합니다.

GKE Standard 클러스터에서 각 Standard 노드 풀에 대해 다음 노드 업그레이드 전략 중 하나를 구성할 수 있습니다.

  • 일시 급증 업그레이드: 노드가 순환 기간에 업그레이드됩니다. 한 번에 업그레이드할 수 있는 노드 수와 업그레이드로 인한 워크로드 중단 정도를 제어할 수 있습니다.
  • 블루-그린 업그레이드: 워크로드가 새 노드 구성에서 검증되는 동안 롤백에 대비하여 기존 노드를 유지할 수 있습니다.
  • 자동 확장된 블루-그린 업그레이드(미리보기): 워크로드를 더 오래 실행할 수 있으며 유휴 상태이거나 활용도가 낮은 노드의 비용을 최소화할 수 있습니다.

GKE는 이러한 특정 시나리오에 대해 다음 전략을 선택합니다.

  • Autopilot 클러스터에서 GKE는 일시 급증 업그레이드를 사용합니다. 자세한 내용은 Autopilot 클러스터 업그레이드 문서의 일시 급증 업그레이드 섹션을 참고하세요.
  • Standard 클러스터의 Autopilot 관리 노드 풀의 경우 GKE는 일시 급증 업그레이드를 사용합니다. 다른 전략을 선택하거나 구성을 변경할 수 없습니다.
  • Flex-start VM을 사용하는 노드의 경우 GKE는 단기 업그레이드를 사용합니다. 큐에 추가된 프로비저닝을 통한 flex-start는 flex-start 미리보기 출시의 일부인 새 플래그를 지원합니다. 유연한 시작은 동적 워크로드 스케줄러를 기반으로 합니다.

Standard 노드 풀의 업그레이드 전략을 선택하면 속도, 워크로드 중단, 위험 완화, 비용 최적화가 적절하게 균형 잡힌 프로세스를 선택할 수 있습니다. 환경에 적합한 노드 업그레이드 전략에 대한 자세한 내용은 다음을 참고하세요.

각 전략을 사용하면 환경의 요구사항에 따라 프로세스를 최적화하도록 업그레이드 설정을 구성할 수 있습니다. 자세한 내용은 선택한 업그레이드 전략 구성을 참고하세요. 선택한 전략의 경우 해당 전략을 사용하여 노드를 업그레이드하는 데 충분한 할당량, 리소스 가용성 또는 예약 용량이 있는지 확인합니다. 자세한 내용은 노드 업그레이드 리소스 확인을 참조하세요.

일시 급증 업그레이드

일시 급증 업그레이드는 기본 업그레이드 전략이며 증분 변경사항을 처리할 수 있는 애플리케이션에 가장 적합합니다. 일시 급증 업그레이드는 순차적 방법을 사용하여 정의되지 않은 순서로 노드를 업그레이드합니다. maxSurge로 만들 수 있는 새 일시 급증 노드 수와 maxUnavailable로 한 번에 중단할 수 있는 기존 노드 수를 선택하여 환경에 가장 적합한 속도와 중단 간의 균형을 찾습니다.

일시 급증 업그레이드는 클러스터 자동 확장 처리와 함께 작동하여 업그레이드 중인 노드의 변경을 방지합니다.

환경에 일시 급증 업그레이드를 선택해야 하는 경우

비용 최적화가 중요하고 워크로드가 60분 미만의 중단을 감당할 수 있다면 노드 풀의 일시 급증 업그레이드를 선택하는 것이 좋습니다.

일시 급증 업그레이드는 다음 시나리오에 가장 적합합니다.

  • 업그레이드 속도에 맞게 최적화하려는 경우
  • 워크로드가 중단에 대한 내결함성이 더 높고 최대 60분까지의 단계적 종료가 허용되는 경우
  • 새 노드 생성을 최소화하여 비용을 관리하려는 경우

GKE가 일시 급증 업그레이드를 사용하는 경우

이 업그레이드가 사용 설정되면 GKE는 다음 유형의 변경이 발생할 때 일시 급증 업그레이드를 사용합니다.

노드 라벨 및 기존 노드 풀의 taint에 업데이트 적용을 비롯한 다른 변경의 경우에는 노드를 다시 만들 필요가 없으므로 일시 급증 업그레이드를 사용하지 않습니다.

일시 급증 업그레이드 설정 이해

일시 급증 업그레이드 설정을 사용하여 일시 급증 설정을 사용하는 클러스터 유지보수 중에 노드 풀의 속도와 중단 간의 적절한 균형을 선택합니다. Standard 노드 풀의 일시 급증 업그레이드 매개변수를 변경하여 GKE에서 한 번에 업그레이드하려는 노드 수를 변경할 수 있습니다.

일시 급증 업그레이드 동작은 설명된 단계에 따라 순환 기간 동안 동시에 업그레이드되는 노드 수를 결정하는 maxSurgemaxUnavailable 설정에 따라 결정됩니다.

maxSurge: GKE에서 기존 일시 급증 노드를 삭제하기 전에 새 일시 급증 노드 생성

maxSurge를 설정하여 업그레이드 중에 노드 풀에 영역별로 추가할 수 있는 최대 추가 일시 급증 노드 수를 선택해 기존 노드에서 실행 중인 워크로드가 즉시 새 노드로 마이그레이션될 수 있는 가능성을 높입니다. 기본값은 1입니다. 노드 하나를 업그레이드하기 위해 GKE에서 다음 단계를 수행합니다.

  1. 새 노드를 프로비저닝합니다.
  2. 새 노드가 준비될 때까지 기다립니다.
  3. 기존 노드를 차단합니다.
  4. 최대 1시간 동안 PodDisruptionBudgetGracefulTerminationPeriod 설정을 고려하여 기존 노드를 드레이닝합니다. 1시간 후에는 업그레이드가 진행될 수 있도록 나머지 포드가 강제로 제거됩니다.
  5. 기존 노드를 삭제합니다.

GKE에서 일시 급증 노드를 만들려면 프로젝트에 추가 노드를 일시적으로 만들 수 있는 리소스가 있어야 합니다. 추가 용량이 없으면 리소스를 사용할 수 있을 때까지 GKE에서 노드 업그레이드를 시작하지 않습니다. 자세한 내용은 일시 급증 업그레이드 리소스를 참고하세요.

maxUnavailable: GKE에서 기존 노드를 다시 만들 수 없도록 설정

maxUnavailable을 설정하여 업그레이드 중에 동시에 사용할 수 없는 영역별 최대 노드 수를 선택합니다. 기본값은 0입니다. 다른 노드에 용량이 없으면 기존 노드에서 실행 중인 워크로드는 기존 노드가 업그레이드될 때까지 기다려야 할 수 있습니다. 노드 하나를 업그레이드하기 위해 GKE에서 다음 단계를 수행합니다.

  1. 기존 노드를 차단합니다.
  2. 최대 1시간 동안 PodDisruptionBudgetGracefulTerminationPeriod 설정을 고려하여 기존 노드를 드레이닝합니다. 1시간 후에는 업그레이드를 진행할 수 있도록 나머지 포드가 강제로 제거됩니다.
  3. 새 구성으로 기존 노드를 다시 만듭니다.
  4. 기존 노드가 준비될 때까지 기다립니다.
  5. 기존 업그레이드된 노드를 차단 해제합니다.

GKE에서 기존 노드를 다시 만들 때 예약에서 용량이 없으면 GKE가 노드 용량을 일시적으로 해제합니다. 즉, 용량이 제한되면 기존 용량이 손실될 수 있습니다. 따라서 환경에 리소스가 제한된 경우 예약된 노드를 사용하는 경우에만 이 설정을 사용합니다. 자세한 내용은 리소스가 제한된 환경에서 업그레이드를 참고하세요.

maxSurgemaxUnavailable 설정 사용 예시

예를 들어 GKE 클러스터에는 노드 5개가 있는 단일 영역 노드 풀과 maxSurge=2;maxUnavailable=1 일시 급증 업그레이드 구성이 있습니다.

이 노드 풀을 사용하여 일시 급증 업그레이드가 진행되는 동안 순환 기간에 GKE는 업그레이드된 노드 2개를 만들고 기존 노드를 한 번에 최대 1개까지 중단합니다. 업그레이드된 노드가 준비되면 GKE에서 기존 노드를 최대 3개까지 줄입니다. 업그레이드 프로세스 중에 노드 풀에는 노드 4~7개가 포함됩니다.

일시 급증 업그레이드 설정 고려사항

일시 급증 업그레이드 설정을 구성하기 전에 다음 정보를 고려하세요.

  • 특정 예약 어피니티가 있는 노드 풀의 경우 일시 급증 업그레이드로 생성된 노드에는 Google Cloud 리소스 할당량, 리소스 가용성, 예약 용량이 적용됩니다. 환경에 리소스가 제한된 경우 리소스가 제한된 환경에서 업그레이드를 참고하세요.
  • GKE에서 동시에 업그레이드하는 노드 수는 maxSurgemaxUnavailable의 합계입니다. 동시에 업그레이드되는 최대 노드 수는 20개로 제한됩니다. 일시 급증 업그레이드는 클러스터 자동 확장 처리와 함께 작동하여 업그레이드 중인 노드의 변경을 방지합니다.
  • GKE는 멀티 영역 노드 풀을 한 번에 한 영역씩 업그레이드합니다. 일시 급증 업그레이드 매개변수는 영역의 노드 수만큼만 적용됩니다. 동시에 업그레이드할 수 있는 최대 노드 수는 maxSurgemaxUnavailable의 합계를 초과하지 않고 영역의 노드 수보다 많지 않습니다.
  • 노드 풀에서 스팟 VM을 사용하는 경우 GKE는 스팟 VM을 사용하여 일시 급증 노드를 만들지만 기존 노드를 차단하고 드레이닝하기 전에 스팟 VM이 준비될 때까지 기다리지 않습니다. 자세한 내용은 스팟 VM을 사용하여 Standard 노드 풀 업그레이드를 참고하세요.

일시 급증 업그레이드 설정을 조정하여 속도와 중단 간의 균형 맞춤

다음 표에서는 다양한 구성을 이해하는 데 도움이 되도록 4가지 업그레이드 프로필을 예시로 설명합니다.

설명 구성 일반적인 사용 사례
균형(기본값), 느리지만 중단 최소 maxSurge=1 maxUnavailable=0 대부분의 워크로드
빠름, 일시 급증 리소스 없음, 중단 최대 maxSurge=0 maxUnavailable=20 완료될 때까지 작업을 실행해야 하는 대규모 노드 풀
빠름, 일시 급증 리소스가 가장 많음, 중단을 덜 유발함 maxSurge=20 maxUnavailable=0 대규모 노드 풀
가장 느리고 중단을 유발하며 일시 급증 리소스 없음 maxSurge=0 maxUnavailable=1 예약이 있는 리소스가 제한된 노드 풀

균형(기본값)

일시 급증 업그레이드를 활용하는 가장 간단한 방법은 기본 구성인 maxSurge=1;maxUnavailable=0.을 사용하는 것입니다. 이 구성을 사용하면 일시 급증 노드가 한 번에 하나만 추가되어 업그레이드 속도가 느려집니다. 즉, 한 번에 노드 하나만 업그레이드됩니다. 포드가 새 일시 급증 노드에서 즉시 다시 시작될 수 있습니다. 이 구성에서는 새 노드 하나를 일시적으로 만들 수 있는 리소스만 필요합니다.

빠르고 일시 급증 리소스 없음

대규모 노드 풀이 있고 워크로드가 중단에 민감하지 않은 경우(예: 완료될 때까지 실행된 일괄 작업) 추가 리소스를 사용하지 않고 maxSurge=0;maxUnavailable=20 구성을 사용하여 속도를 극대화합니다. 이 구성은 추가 일시 급증 노드를 실행하지 않으며 노드 20개를 동시에 업그레이드할 수 있습니다.

빠르고 중단을 덜 유발함

워크로드가 중단에 민감하고 이미 PodDisruptionBudgets(PDB)를 설정했지만 externalTrafficPolicy: Local를 사용하지 않아 동시 노드 드레이닝 시 작동하지 않는 경우 maxSurge=20;maxUnavailable=0을 사용하여 업그레이드 속도를 높일 수 있습니다. 이 구성은 동시에 20개의 노드를 업그레이드하지만 PDB는 지정된 시간에 드레이닝할 수 있는 포드 수를 제한합니다. PDB 구성은 다양할 수 있지만 노드 풀에서 실행되는 워크로드 하나 이상에 maxUnavailable=1을 사용하여 PDB를 만든 경우 이러한 워크로드 중 포드 하나만 한 번에 제거할 수 있으므로 전체 업그레이드의 동시 로드가 제한됩니다. 이 구성에서는 새 노드 20개를 임시로 만들 수 있는 리소스가 필요합니다.

느리지만 일시 급증 리소스 없음

추가 리소스를 사용할 수 없는 경우 maxSurge=0;maxUnavailable=1을 사용하여 한 번에 노드 하나를 다시 만들 수 있습니다.

진행 중인 일시 급증 업그레이드 제어

일시 급증 업그레이드가 진행되는 동안 명령어를 사용하여 업그레이드를 제어할 수 있습니다. 업그레이드 프로세스를 보다 세부적으로 제어하려면 블루/그린 업그레이드를 사용하는 것이 좋습니다.

일시 급증 업그레이드 취소(일시중지)

업그레이드 프로세스 중에 언제든지 진행 중인 일시 급증 업그레이드를 취소할 수 있습니다. 취소하면 업그레이드가 일시중지되어 GKE가 새 노드를 업그레이드하는 것이 중지되지만 이미 업그레이드된 노드의 업그레이드는 자동으로 롤백되지 않습니다. 업그레이드를 취소하면 재개 또는 롤백을 선택할 수 있습니다.

업그레이드를 취소하면 GKE는 각 노드에 대해 다음 작업을 실행합니다.

  • 업그레이드가 시작된 노드는 업그레이드를 완료됩니다.
  • 업그레이드가 시작되지 않은 노드는 업그레이드되지 않습니다.
  • 업그레이드가 이미 성공적으로 완료된 노드는 영향을 받지 않으며 롤백되지도 않습니다.

이는 노드 풀의 노드들이 2개의 서로 다른 버전을 실행하는 상태가 될 수 있다는 의미입니다. 노드 풀에 자동 업그레이드가 사용 설정된 경우 노드 풀의 자동 업그레이드를 다시 예약할 수 있으며, 이렇게 하면 이전 버전을 실행하는 노드 풀의 나머지 노드가 업그레이드됩니다.

노드 풀 업그레이드를 취소하는 방법을 알아보세요.

일시 급증 업그레이드 재개

노드 풀 업그레이드가 취소되어 부분적으로 업그레이드된 상태이면 업그레이드를 재개하여 노드 풀의 업그레이드 프로세스를 완료할 수 있습니다. 이렇게 하면 원래 작업에서 업그레이드되지 않은 나머지 노드가 업그레이드됩니다. 노드 풀 업그레이드를 재개하는 방법을 알아보세요.

일시 급증 업그레이드 롤백

노드 풀이 부분적으로 업그레이드된 상태이면 노드 풀을 롤백하여 이전 상태로 되돌릴 수 있습니다. 이미 성공적으로 업그레이드된 노드 풀은 롤백할 수 없습니다. 업그레이드가 아직 시작되지 않은 노드는 영향을 받지 않습니다. 노드 풀 업그레이드를 롤백하는 방법을 알아보세요.

업그레이드가 완료된 후 노드 풀을 이전 버전으로 다운그레이드하려면 노드 풀 다운그레이드를 참고하세요.

블루/그린 업그레이드

블루/그린 업그레이드는 기본 일시 급증 업그레이드 전략의 대안 업그레이드 전략입니다. 블루-그린 업그레이드를 사용하면 GKE가 먼저 새 노드 구성으로 새로운 노드 리소스 집합("그린" 노드)을 만들고 원래 리소스에서 모든 워크로드("블루" 노드)를 제거합니다. GKE는 필요한 경우 흡수 시간이 충족될 때까지 워크로드 롤백을 위해 "블루" 리소스를 유지합니다. 환경의 니즈에 따라 업그레이드 속도와 적응 시간을 조정할 수 있습니다.

이 전략을 사용하면 업그레이드 프로세스를 보다 세부적으로 제어할 수 있습니다. 원래 환경이 업그레이드 중에 유지보수되기 때문에 필요한 경우 진행 중인 업그레이드를 롤백할 수 있습니다. 그러나 이 업그레이드 전략은 리소스를 더 많이 사용합니다. 원래 환경이 복제되므로 업그레이드 중 노드 풀에 리소스 사용량이 두 배가 됩니다.

환경에 블루-그린 업그레이드를 선택해야 하는 경우

워크로드가 업그레이드를 견디지 못할 시에는 빠르게 롤백할 수 있어야 하는 고용성 프로덕션 워크로드가 있고 일시적인 비용 증가를 감당할 수 있는 경우 노드 풀의 블루/그린 업그레이드를 선택하는 것이 좋습니다

다음 시나리오에는 블루-그린 업그레이드가 가장 적합합니다.

  • 60분 이상의 단계적 중단이 요구되기에 위험 완화가 가장 중요한 점진적 출시가 필요한 경우
  • 워크로드가 중단에 대한 내결함성이 낮은 경우
  • 리소스 사용량이 더 많아 일시적으로 비용이 증가해도 감당할 수 있는 경우

블루/그린 업그레이드는 유지보수 기간을 초과하더라도 완료될 때까지 계속됩니다. 자세한 내용은 노드 업그레이드 전략이 유지보수 기간과 함께 작동하는 방식을 참고하세요.

GKE가 블루/그린 업그레이드를 사용하는 경우

GKE 노드의 경우 노드를 다시 만들어야 하는 다양한 유형의 구성 변경이 있습니다. 이 업그레이드가 사용 설정되면 GKE는 다음 유형의 변경이 발생할 때 블루-그린 업그레이드를 사용합니다.

일시 급증 업그레이드는 노드를 다시 만들어야 하는 다른 업데이트에 사용됩니다. 자세한 내용은 일시 급증 업그레이드를 사용하는 경우를 참고하세요.

블루-그린 업그레이드 단계

블루-그린 업그레이드에서 프로세스를 맞춤설정하고 제어하는 방법은 다음과 같습니다.

이 섹션에서는 업그레이드 프로세스를 단계별로 설명합니다. 업그레이드 설정을 통해 단계의 작동 방식 및 업그레이드 프로세스를 제어하는 명령어를 조정할 수 있습니다.

1단계: 그린 풀 생성

이 단계에서는 새 노드 구성(새 버전 또는 이미지 유형)이 있는 대상 풀의 각 영역에 대해 "그린" 풀로 알려진 새 관리형 인스턴스 그룹(MIG) 집합이 생성됩니다.

새 그린 리소스 프로비저닝을 시작하기 전에 할당량을 확인합니다.

이 단계에서는 기존 MIG(블루 풀이라고 함) 클러스터 자동 확장 처리가 확장 또는 축소를 중지합니다. 그린 풀은 이 단계에서만 확장될 수 있습니다.

이 단계에서는 필요에 따라 업그레이드를 취소할 수 있습니다. 블루-그린 업그레이드를 취소하면 업그레이드가 현재 단계에서 일시중지됩니다. 취소한 후에는 이를 재개하거나 롤백할 수 있습니다. 이 단계에서 롤백하면 그린 풀이 삭제됩니다.

2단계: 블루 풀 차단

이 단계에서 블루 풀의 모든 원래 노드(기존 MIG)가 차단(예약 불가능으로 표시됨)됩니다. 기존 워크로드는 계속 실행되지만 기존 노드에 새 워크로드가 예약되지 않습니다.

이 단계에서는 필요에 따라 업그레이드를 취소할 수 있습니다. 블루-그린 업그레이드를 취소하면 업그레이드가 현재 단계에서 일시중지됩니다. 취소한 후에는 이를 재개하거나 롤백할 수 있습니다. 이 단계에서 롤백하면 블루 풀이 차단 해제되고 그린 풀이 삭제됩니다.

3단계: 블루 풀 드레이닝

이 단계에서는 블루 풀의 기존 노드(기존 MIG)가 일괄 드레이닝됩니다. Kubernetes가 노드를 드레이닝하면 제거 요청은 노드에서 실행 중인 모든 포드로 전송됩니다. 포드가 다시 예약됩니다. 드레이닝 중 PodDisruptionBudget 위반이나 긴 terminationGracePeriodSeconds을 가지는 포드의 경우 노드가 삭제되면 블루 풀 삭제 단계에서 삭제됩니다. 이 섹션과 다음 섹션에서 설명하는 것처럼, BATCH_SOAK_DURATIONNODE_POOL_SOAK_DURATION를 사용하여 포드가 삭제되기 전에 기간을 연장할 수 있습니다.

다음 설정 중 하나를 사용하여 배치 크기를 제어할 수 있습니다.

  • BATCH_NODE_COUNT: 일괄로 드레이닝할 노드의 절대 수입니다.
  • BATCH_PERCENT: 일괄로 드레이닝할 노드의 비율로, 0에서 1 사이의 십진수로 표시됩니다. 백분율이 노드의 정수가 아니면 GKE는 가장 가까운 노드 백분율부터 최솟값 노드 1개로 내림합니다.

이러한 설정 중 하나가 0으로 설정되면 GKE는 이 단계를 건너뛰고 노드 풀 적응 단계로 진행합니다.

또한 BATCH_SOAK_DURATION을 사용하여 각 배치 드레이닝 시간을 관리할 수 있습니다. 이 기간은 초 단위로 정의되며 기본값은 0초입니다.

이 단계에서는 필요에 따라 업그레이드를 취소할 수 있습니다. 블루-그린 업그레이드를 취소하면 업그레이드가 현재 단계에서 일시중지됩니다. 취소한 후에는 이를 재개하거나 롤백할 수 있습니다. 이전 배치에서 이미 드레인이 완료된 상태에서 업그레이드를 재개하면 해당 배치의 BATCH_SOAK_DURATION를 따르지 않고 다음 노드 배치가 즉시 처리될 수 있습니다. 이 단계에서 롤백하면 블루 풀 드레이닝이 중지되고 블루 풀이 차단 해제됩니다. 그런 다음 파란색 풀에서 워크로드의 일정을 변경할 수 있으며 (보장되지 않음) 녹색 풀은 드레이닝되고 삭제됩니다.

4단계: 노드 풀 적응

이 단계는 블루 풀 노드가 드레이닝된 후 워크로드 상태를 확인하는 데 사용됩니다.

적응 시간은 초 단위로 NODE_POOL_SOAK_DURATION으로 설정됩니다. 기본적으로 1시간(3600초)으로 설정됩니다. 총 흡수 기간이 7일(604,800초)에 도달하면 블루 풀 삭제 단계가 즉시 시작됩니다.

총 적응 기간은 NODE_POOL_SOAK_DURATIONBATCH_SOAK_DURATION을 더한 값에 배치 수를 곱한 값이며, BATCH_NODE_COUNT 또는BATCH_PERCENT로 결정됩니다.

이 단계에서는 업그레이드를 완료하여 업그레이드를 마치고 나머지 적용 시간을 건너뛸 수 있습니다. 이렇게 하면 블루 풀 노드 삭제 프로세스가 즉시 시작됩니다.

또한 필요에 따라 업그레이드를 취소할 수 있습니다. 블루-그린 업그레이드를 취소하면 업그레이드가 현재 단계에서 일시중지됩니다. 취소한 후에는 이를 재개하거나 롤백할 수 있습니다.

이 단계에서 이제 클러스터 자동 확장 처리가 그린 풀을 확장하거나 축소할 수 있습니다.

5단계: 블루 풀 삭제

소킹 시간이 만료되면 블루 풀 노드가 타겟 풀에서 삭제됩니다. 이 단계는 일시중지할 수 없습니다. 또한 이 단계에서는 퇴출을 사용하지 않고 포드를 삭제하려고 시도합니다. 제거와 달리 삭제는 PDB를 고려하지 않고 포드를 강제로 삭제합니다. 삭제 시 포드의 terminationGracePeriodSeconds가 60분 이하로 제한됩니다. 남은 포드를 삭제하려는 마지막 시도가 이루어진 후 블루 풀 노드가 노드 풀에서 삭제됩니다.

이 단계를 완료하면 노드 풀에 업데이트된 구성(버전 또는 이미지 유형)이 포함된 새 노드만 포함됩니다.

클러스터 자동 확장 처리가 블루-그린 업그레이드에서 작동하는 방식

블루/그린 업그레이드 단계에서 원래 "블루" 풀은 확장되거나 축소되지 않습니다. 새로운 "그린" 풀이 생성되면 확장 또는 축소할 수 있는 노드 풀 적응 단계까지만 확장될 수 있습니다. 업그레이드가 롤백되는 경우 용량이 더 필요하다면 이 프로세스 중에 원래 "블루" 풀이 확장될 수 있습니다.

진행 중인 블루-그린 업그레이드 제어

블루/그린 업그레이드를 사용하면 업그레이드가 진행되는 동안 명령어를 사용하여 제어할 수 있습니다. 이를 통해 워크로드를 이전 노드 구성으로 롤백해야 한다고 판단하는 경우와 같은 상황에서 프로세스를 세부적으로 제어할 수 있습니다.

블루-그린 업그레이드 취소(일시중지)

블루-그린 업그레이드를 취소하면 업그레이드가 현재 단계에서 일시중지됩니다. 이 명령어는 파란색 풀 삭제 단계를 제외한 모든 단계에서 사용할 수 있습니다. 취소되면 요청이 발행된 단계에 따라 노드 풀이 중간 상태에서 일시중지됩니다.

노드 풀 업그레이드를 취소하는 방법을 알아보세요.

업그레이드가 취소되면 재개 또는 롤백의 두 가지 경로 중 하나를 선택할 수 있습니다.

블루/그린 업그레이드 재개

업그레이드를 진행해도 된다고 판단되면 업그레이드를 재개할 수 있습니다.

재개하면 업그레이드 프로세스가 일시중지된 중간 단계에서 계속됩니다. 노드 풀 업그레이드를 재개하는 방법을 알아보려면 노드 풀 업그레이드 재개를 참고하세요.

블루/그린 업그레이드 롤백

업그레이드를 진행하지 않고 노드 풀을 원래 상태로 되돌리려면 롤백하면 됩니다. 노드 풀 업그레이드를 롤백하는 방법을 알아보려면 노드 풀 업그레이드 롤백을 참고하세요.

롤백 워크플로를 사용하면 프로세스가 자체적으로 역행하여 노드 풀을 원래 상태로 되돌립니다. 블루 풀은 차단되지 않으므로 워크로드를 다시 예약할 수 있습니다. 이 프로세스 중에 클러스터 자동 확장 처리는 필요에 따라 블루 풀을 확장할 수 있습니다. 그린 풀이 드레이닝되고 삭제됩니다.

업그레이드가 완료된 후 노드 풀을 이전 버전으로 다운그레이드하려면 노드 풀 다운그레이드를 참고하세요.

블루/그린 업그레이드 완료

적응 단계 중에 워크로드가 새 노드 구성에 대한 추가 검사가 필요하지 않고 이전 노드를 삭제할 수 있다고 판단되면 업그레이드를 완료하면 됩니다. 업그레이드를 완료하면 나머지 적응 단계를 건너뛰고 블루 풀 단계 삭제로 진행됩니다.

complete 명령어를 사용하는 방법에 대한 자세한 내용은 블루/그린 노드 풀 업그레이드 완료를 참고하세요.

자동 확장된 블루-그린 업그레이드

자동 확장된 블루-그린 업그레이드는 비용을 최소화하면서 중단 내결함성이 없는 워크로드가 제거되기 전의 시간을 극대화하는 다른 유형의 업그레이드 전략입니다. 이 전략은 표준 블루-그린 업그레이드에서 파생됩니다. 하지만 자동 확장된 블루-그린 업그레이드를 사용하면 노드가 차단된 후 최대 7일 동안 제거하기에 안전하지 않은 것으로 표시된 워크로드가 있는 노드가 드레이닝되지 않습니다.

다음 섹션에서는 이 전략을 선택해야 하는 경우, 이 전략의 블루-그린 업그레이드 구현과 표준 블루-그린 업그레이드와의 차이점, 이 전략을 사용할 때 따라야 하는 권장사항에 대해 설명합니다.

자동 확장된 블루-그린 업그레이드를 사용하려면 자동 확장된 블루-그린 업그레이드 구성을 참고하세요.

환경에 맞는 자동 확장된 블루-그린 업그레이드를 선택해야 하는 경우

제거 전 최대 시간이 필요하지만 가능한 한 빨리 다시 예약할 필요가 없는 워크로드의 경우에는 노드 풀에 대해 자동 확장된 블루-그린 업그레이드를 선택하는 것이 좋습니다.

다음과 같은 시나리오에 해당할 경우에 자동 확장된 블루-그린 업그레이드가 잘 작동합니다.

  • 완료될 때까지 실행되어야 하는 일괄 워크로드 (AI/ML 학습 포함)가 있습니다.
  • 유휴 상태 또는 사용률이 낮은 노드를 최소화하여 표준 블루-그린 업그레이드에 비해 비용을 최소화합니다.
  • 포드에 즉각적인 다시 예약 또는 이전 노드 구성으로의 즉각적인 롤백을 보장할 필요가 없습니다.

워크로드를 새 노드로 다시 예약하는 시간을 최소화하고 이전 노드 구성으로 롤백하는 기능이 필요한 경우 표준 블루-그린 업그레이드를 선택합니다.

자동 확장된 블루-그린 업그레이드는 표준 블루-그린 업그레이드와 마찬가지로 유지보수 기간을 초과하더라도 완료될 때까지 계속됩니다. 자세한 내용은 노드 업그레이드 전략이 유지보수 기간과 함께 작동하는 방식을 참고하세요.

자동 확장된 블루-그린 업그레이드 단계

GKE가 자동 확장된 블루-그린 업그레이드로 노드 풀을 업그레이드할 때 단계는 표준 블루-그린 업그레이드와 다릅니다. 표준 업그레이드 전략의 단계는 블루-그린 업그레이드 단계를 참고하세요.

자동 확장된 블루-그린 업그레이드 정책이 사용 설정된 경우 GKE는 작업 중에 다음 단계를 실행합니다.

  1. GKE가 그린 풀을 만듭니다. 하지만 그린 풀은 0개 노드로 시작합니다. 이후 단계에서 GKE가 블루 풀에서 포드를 삭제하면 클러스터 자동 확장 처리가 그린 풀을 확장하여 이러한 포드를 실행합니다.
  2. GKE가 블루 풀을 차단합니다.
  3. GKE는 0~7일 (기본값 3일)로 구성할 수 있는 기간 동안 대기합니다. 이 기간 동안 GKE는 다음을 수행합니다.

    • 클러스터 자동 확장 처리는 이러한 노드에 "cluster-autoscaler.kubernetes.io/safe-to-evict": "false" 주석을 실행하는 포드가 없는 한 사용률이 낮은 파란색 풀 노드를 축소합니다. 이 주석은 가동 중지를 위해 가장 오랜 시간이 필요한 워크로드가 계속 실행될 수 있도록 보장합니다. 클러스터 자동 확장 처리가 활용도가 낮은 노드를 적극적으로 축소하지 않는 경우 클러스터 자동 확장 처리가 축소되지 않는 문제 해결포드 예약 및 중단 고려을 참고하세요.
    • GKE는 블루 풀을 축소할 때 --min-nodes--total-min-nodes 매개변수의 자동 확장 한도를 무시합니다. 이 기간이 완료되기 전에 모든 블루 풀 노드가 축소되면 GKE는 즉시 블루 풀 삭제 단계로 진행합니다.
  4. GKE가 블루 풀을 드레이닝하며 동시에 최대 20개의 남은 블루 풀 노드를 드레이닝합니다. GKE는 최대 1시간 동안 PodDisruptionBudget 설정을 따르고 최대 24시간 동안 terminationGracePeriodSeconds 설정을 따릅니다.

  5. GKE가 노드 풀 흡수 단계를 건너뜁니다.

  6. GKE가 블루 풀을 삭제합니다.

자동 확장된 블루-그린 업그레이드 권장사항

다음 섹션에서는 자동 확장된 블루-그린 업그레이드 중에 워크로드 중단을 최소화하기 위한 클러스터, 노드 풀, 포드 관련 권장사항을 설명합니다.

클러스터 및 노드 풀 구성

  • GKE는 그린 풀을 확장할 때 자동 확장 한도를 적용합니다. GKE가 블루 풀에서 그린 풀로 워크로드를 다시 예약할 때 클러스터 자동 확장 처리가 그린 풀을 확장할 수 있도록 --max-nodes 또는 --total-max-nodes 매개변수를 충분히 높게 설정합니다. GKE는 블루 풀을 축소할 때 --min-nodes 또는 --total-min-nodes 매개변수를 따르지 않습니다.
  • GKE가 사용률이 낮은 블루 풀의 노드를 더 적극적으로 축소하도록 하려면 optimize-utilization 자동 확장 프로필을 구성합니다. 자세한 내용은 자동 확장 프로필을 참고하세요.
  • 노드 자동 프로비저닝으로 생성된 노드 풀을 자동 확장된 블루-그린 업그레이드를 사용하도록 업데이트하지 마세요. 또한 새 자동 프로비저닝된 노드 풀에 자동 확장된 블루-그린 업그레이드를 사용하도록 클러스터를 구성하지 마세요.

포드 구성

  • 블루 풀을 드레이닝하기 전 일시 중지 기간 동안 포드가 제거되지 않도록 하려면 이러한 포드에 "cluster-autoscaler.kubernetes.io/safe-to-evict": "false" 주석을 추가합니다. 이 주석은 포드의 노드가 사용률이 낮은 경우 클러스터 자동 확장 처리가 포드를 제거하지 못하도록 합니다.
  • 표준 블루-그린 업그레이드에서와 같이 블루 풀의 노드에서 제거된 포드가 그린 풀의 노드에만 다시 예약되도록 하려면 워크로드에 cloud.google.com/gke-nodepool:NODE_POOL_NAME 라벨의 nodeSelector를 추가합니다. 이 라벨을 생략하고 클러스터에 다른 노드 풀이 있으면 제거된 포드가 해당 노드 풀의 노드에 예약될 수 있습니다.

자동 확장된 블루-그린 업그레이드의 제한사항

  • 자동 확장된 블루-그린 업그레이드를 취소재개할 수 있지만 취소된 업그레이드를 롤백할 수는 없습니다.
  • 그린 풀이 0개 노드로 생성되기 때문에 블루 풀이 코돈 처리되고 드레이닝될 때 할당량 및 한도 또는 리소스 가용성으로 인해 클러스터 자동 확장 처리가 그린 풀을 확장할 수 없는 경우 포드가 일시적으로 예약 불가능한 상태가 될 수 있습니다.
  • 클러스터의 컨트롤 플레인이 버전 1.34.0-gke.2201000 이상을 실행하고 클러스터 자동 확장 처리가 사용 설정된 경우에만 자동 확장된 블루-그린 업그레이드로 노드 풀을 업그레이드할 수 있습니다.

GKE가 자동 확장된 블루-그린 업그레이드를 사용하는 경우

GKE는 표준 블루-그린 업그레이드와 동일한 유형의 변경사항에 자동 확장된 블루-그린 업그레이드를 사용합니다. GKE가 표준 블루-그린 업그레이드 전략을 사용하는 변경사항 유형에 대한 자세한 내용은 GKE에서 블루-그린 업그레이드를 사용하는 경우를 참고하세요.

클러스터 자동 확장 처리가 자동 확장된 블루-그린 업그레이드에서 작동하는 방식

자동 확장된 블루-그린 업그레이드를 구성하려면 클러스터 자동 확장 처리도 구성해야 합니다.

자동 확장된 블루-그린 업그레이드를 사용하는 경우 클러스터 자동 확장 처리는 다음 작업을 실행합니다.

  • GKE가 블루 풀 드레이닝을 기다리는 단계에서는 블루 풀이 확장되지 않으며 노드가 활용도가 낮아질 때만 클러스터 자동 확장 처리에 의해 축소됩니다. 클러스터 자동 확장 처리는 --min-nodes 또는 --total-min-nodes 매개변수를 고려하지 않고 파란색 풀을 0으로 축소할 수 있습니다. 다른 모든 단계에서는 클러스터 자동 확장 처리가 블루 풀을 확장하거나 축소하지 않습니다.
  • 클러스터 자동 확장 처리는 업그레이드 전략의 모든 단계에서 필요한 경우 그린 풀을 노드 0개에서 확장하거나 --min-nodes 설정으로 축소합니다.

단기 업그레이드 (flex-start 및 큐에 추가된 프로비저닝만 해당)

단기 업그레이드는 동적 워크로드 스케줄러를 기반으로 하는 flex-start VM을 사용하는 노드와 큐에 추가된 프로비저닝을 사용하는 노드 (1.32.2-gke.1652000 이상)에서만 사용할 수 있는 노드 업그레이드 전략입니다. 단기 업그레이드를 사용하는 노드에 관한 자세한 내용은 동적 워크로드 스케줄러를 사용한 GPU 획득 가능 여부 정보를 참고하세요.

GKE는 Standard 노드 풀과 Autopilot 클러스터의 노드 그룹에 단기 업그레이드 전략을 사용합니다.

이 전략을 사용하면 GKE가 기존 워크로드를 중단하지 않고 이러한 제한된 런타임 노드를 업그레이드합니다. 이 전략은 다음과 같이 작동합니다.

  1. 기존 노드는 선점될 때까지 실행됩니다.
  2. 새 노드는 새 노드 구성을 사용합니다.
  3. 최대 7일 동안 노드는 기존 구성을 실행하는 것에서 새 구성을 실행하는 것으로 전환됩니다.

GKE는 Flex-start VM을 사용하는 노드에 이 전략을 자동으로 구성합니다. 이 전략에는 구성 설정이 없습니다.

GKE가 단기 업그레이드를 사용하는 경우

GKE는 flex-start VM을 사용하는 노드가 단기 업그레이드를 적용하도록 자동으로 설정합니다. 큐에 추가된 프로비저닝만 사용하지만 GKE 버전 1.32.2-gke.1652000 이상에서 실행되는 클러스터의 노드도 단기 업그레이드를 사용합니다.

단기 업그레이드를 사용하는 Standard 노드 풀 및 Autopilot 클러스터의 노드 그룹의 경우 GKE는 일시 급증 업그레이드가 사용되는 상황에서 이 전략을 사용합니다. 노드 업그레이드 (버전 변경) 외에도 GKE는 일시 급증 업그레이드가 사용되는 방식과 유사하게 다른 유형의 노드 업데이트에 단기 업그레이드를 사용합니다. 자세한 내용은 일시 급증 업그레이드를 사용하는 경우를 참고하세요.

다음 단계