클러스터 업그레이드

이 페이지에서는 관련 작업 및 설정에 대한 자세한 정보에 대한 링크를 포함하여 Google Kubernetes Engine(GKE) 클러스터에서의 자동 및 수동 업그레이드 작동 방식을 설명합니다. 이 정보를 참조하여 워크로드 중단을 최소화하면서 클러스터를 업데이트하여 안정성과 보안을 확보할 수 있습니다.

클러스터 및 노드 풀 업그레이드의 작동 방식

이 섹션에서는 클러스터에서 자동 또는 수동 업그레이드가 어떻게 작동하는지 설명합니다. 자동 업그레이드의 경우 Google이 자동 업그레이드를 시작합니다. Google은 모든 GKE 클러스터의 자동 및 수동 업그레이드를 관찰하고 문제가 발생하면 개입합니다.

클러스터노드보다 먼저 업그레이드됩니다.

클러스터 업그레이드

이 섹션에서는 Google이 클러스터를 자동 업그레이드하거나 사용자가 수동 업그레이드를 시작하면 어떻게 되는지 설명합니다.

  • 영역 클러스터에는 단일 제어 영역만 있습니다. 업그레이드하는 동안 워크로드는 계속 실행되지만 업그레이드가 완료될 때까지 새 워크로드를 배포하거나 기존 워크로드를 수정하거나 클러스터 구성을 다르게 변경할 수 없습니다.

  • 리전 클러스터에는 제어 영역의 여러 복제본이 있으며 한 번에 하나의 복제본만 무작위 순서로 업그레이드됩니다. 업그레이드하는 동안 클러스터는 고가용성을 유지하며 각 제어 영역의 복제본은 업그레이드하는 동안에만 사용할 수 있습니다.

유지보수 기간 또는 유지보수 제외가 구성되면 가능한 경우에 한해 적용됩니다.

노드 풀 업그레이드

클러스터와 노드 풀이 동일한 버전의 GKE를 실행할 필요는 없습니다. 이 섹션에서는 Google이 노드 풀을 자동 업그레이드하거나 사용자가 수동 노드 풀 업그레이드를 시작하면 어떻게 되는지 설명합니다.

노드 풀은 한 번에 하나씩 업그레이드됩니다. 노드 풀 내에서 노드는 한 번에 하나씩 무작위 순서로 업그레이드됩니다. 한 번에 업그레이드되는 노드 수를 변경할 수 있습니다.

이 프로세스는 노드 수와 워크로드 구성에 따라 몇 시간이 걸릴 수 있습니다. 노드 업그레이드 속도를 저하시킬 수 있는 구성은 다음과 같습니다.

유지보수 기간 또는 유지보수 제외가 구성되면 가능한 경우에 한해 적용됩니다.

노드가 업그레이드되면 다음과 같은 결과가 발생합니다.

  1. 일시 급증 업그레이드가 사용 설정된 경우 GKE는 버전이 업그레이드된 새 일시 급증 노드를 만들고 이 노드가 제어 영역에 등록될 때까지 기다립니다.
  2. GKE는 업그레이드할 기존 노드(대상 노드라고 함)를 선택합니다. 대상 노드가 차단되고 드레이닝이 시작됩니다. 이때 GKE는 대상 노드에서 새 pod를 예약할 수 없습니다.
  3. 대상 노드의 pod가 다른 노드로 다시 예약됩니다. 다시 예약할 수 없는 pod는 노드가 다시 예약될 때까지 PENDING 상태로 유지됩니다.
  4. 1단계에서 일시 급증 노드가 생성되었으면 대상 노드는 삭제됩니다. 일시 급증 노드가 생성되지 않았으면 GKE는 대상 노드를 업그레이드한 다음 이 노드가 등록될 때까지 기다립니다.
  5. 제공된 버전으로 노드 자동 업그레이드가 상당수 진행되어 GKE 장비 전체에서 비정상 노드가 발생하면 문제를 조사하는 동안 같은 버전으로의 업그레이드가 중단됩니다.

자동 업그레이드

Google Cloud Console을 사용하여 클러스터를 만들면 기본적으로 클러스터 및 노드 풀의 자동 업그레이드가 사용 설정되며, 새 GKE 버전이 자동 업그레이드 대상으로 선택된 경우 Google에서 클러스터를 업그레이드합니다.

현재는 gcloud 명령어 또는 GKE API를 사용하여 클러스터를 만들 경우 노드 자동 업그레이드가 기본적으로 사용 설정됩니다. 수동으로 사용 중지하려면 노드 자동 업그레이드를 참조하세요.

자동 업그레이드가 적용되는 경우(또는 적용되지 않는 경우)를 세부적으로 제어하려면 유지보수 기간 및 유지보수 제외를 구성하면 됩니다.

클러스터의 노드 풀이 클러스터 API와 호환되려면 제어 영역 버전의 부 버전을 기준으로 3버전 이상 뒤처지지 않아야 합니다. 또한 노드 풀 버전에 따라 각 노드에 설치되는 소프트웨어 패키지의 버전이 달라집니다. 노드 풀을 클러스터 버전으로 업데이트하는 것이 좋습니다.

클러스터를 출시 채널에 등록하면 클러스터의 제어 영역 업그레이드를 완료한 후 지정된 노드 풀의 업그레이드를 시작하기 전에 잠깐 동안만 제외하고 노드가 항상 동일한 버전의 GKE를 실행합니다.

자동 업그레이드 대상 버전이 선택되는 방식

새로운 GKE 버전은 정기적으로 출시되지만 자동 업그레이드 대상 버전이 바로 선택되지는 않습니다. 이전 버전을 부분적으로 실행하는 클러스터의 자동 업그레이드 대상으로 Google이 선택하는 GKE 버전은 클러스터를 충분히 사용하고 시간이 지나도 안정적인 것으로 입증된 버전입니다.

새 자동 업그레이드 대상은 출시 노트에 발표됩니다. 사용 가능한 버전이 자동 업그레이드 대상으로 선택될 때까지 수동으로 업그레이드할 수 있습니다. 특정 버전이 클러스터 자동 업그레이드와 노드 자동 업그레이드 대상으로 몇 주 동안 선택되는 경우가 간혹 있습니다.

새 부 버전이 일반 안정화 버전으로 출시되면 일반적으로 사용 가능한 부 버전 중에서 가장 오래된 버전의 지원이 중단됩니다. 지원되지 않는 부 버전을 실행하는 클러스터는 자동으로 다음 부 버전으로 업그레이드됩니다.

부 버전(예: v1.14.x)이 같은 클러스터는 새 패치 출시 버전으로 자동 업그레이드될 수 있습니다.

출시 채널을 사용하면 버전을 직접 관리하는 대신 버전 안정성을 기준으로 클러스터 및 노드 풀 버전을 제어할 수 있습니다.

자동 업그레이드가 허용되는 경우 구성

기본적으로 자동 업그레이드는 언제든지 허용됩니다. 자동 업그레이드는 특히 리전 클러스터에 거의 영향을 주지 않습니다. 그러나 세부적으로 제어해야 하는 워크로드도 있을 수 있습니다. 유지보수 기간 및 유지보수 제외를 구성하여 자동 업그레이드가 허용되는 경우와 허용되지 않는 경우를 관리할 수 있습니다.

수동 업그레이드

클러스터 또는 노드 풀을 언제든지 사용 가능한 호환 버전으로 수동 업그레이드하도록 요청할 수 있습니다. 수동 업그레이드는 구성된 유지보수 기간 및 유지보수 제외를 무시합니다.

클러스터를 수동으로 업그레이드할 때 클러스터가 리전 클러스터인지 여부에 따라 가용성이 달라집니다.

  • 영역 클러스터의 경우 업그레이드가 진행되는 동안 제어 영역을 사용할 수 없습니다. 대부분의 경우 워크로드는 정상적으로 실행되지만 업그레이드 중에는 수정할 수 없습니다.

  • 리전 클러스터의 경우 업그레이드가 진행되는 동안 한 번에 하나의 제어 영역 복제본을 사용할 수 없지만 업그레이드 중에 클러스터의 고가용성이 유지됩니다.

제어 영역과 호환되는 버전으로의 노드 업그레이드를 수동으로 시작할 수 있습니다.

일시 급증 업그레이드

일시 급증 업그레이드를 사용하면 GKE 업그레이드 노드 수를 한 번에 업그레이드하고 업그레이드로 인해 워크로드가 얼마나 중단되는지 제어할 수 있습니다.

운영 중단을 일으키지 않으면서 적절한 속도로 진행되도록 업그레이드 설정 변경

노드 풀의 일시 급증 업그레이드 매개변수를 변경하여 GKE에서 한 번에 업그레이드하는 노드 수를 변경할 수 있습니다. 일시 급증 업그레이드를 통해 클러스터 유지보수 기간 동안 워크로드 중단을 줄일 수 있고, 동시에 업그레이드되는 노드 수를 제어할 수도 있습니다. 일시 급증 업그레이드는 클러스터 자동 확장 처리와 함께 업그레이드되는 노드의 변경을 방지합니다.

일시 급증 업그레이드 동작은 두 가지 설정으로 결정됩니다.

max-surge-upgrade

업그레이드 중에 노드 풀에 추가할 수 있는 노드 수. max-surge-upgrade를 늘리면 동시에 업그레이드할 수 있는 노드 수가 증가합니다. 기본값은 1입니다. 0 이상으로 설정할 수 있습니다.

max-unavailable-upgrade

업그레이드 중에 동시에 사용할 수 없는 노드 수. 기본값은 0입니다. max-unavailable-upgrade를 늘리면 동시에 업그레이드할 수 있는 노드 수가 증가합니다.

동시에 업그레이드되는 노드 수는 max-surge-upgrademax-unavailable-upgrade의 합계입니다. 동시에 업그레이드되는 최대 노드 수는 20개로 제한됩니다.

예를 들어 max-surge-upgrade가 2로 설정되고 max-unavailable-upgrade가 1로 설정된 경우 5노드 풀이 생성됩니다. 노드 풀 업그레이드 중에 GKE는 업그레이드된 노드 2개를 만듭니다. GKE는 업그레이드된 노드가 준비되면 기존 노드를 3개(max-surge-upgrademax-unavailable-upgrade의 합) 이하로 줄입니다. GKE는 한 번에 최대 1개 노드만 사용할 수 있게 합니다(max-unavailable-upgrade). 업그레이드 프로세스 중에 노드 풀에는 4개에서 7개의 노드가 포함됩니다.

자동 업그레이드수동 업그레이드를 사용하는 노드 풀의 일시 급증 업그레이드 매개변수를 구성할 수 있습니다. '일시 급증 업그레이드를 사용해 GKE 노드 업그레이드의 중단 감소' 가이드를 참조하여 더 자세히 알아보고 일시 급증 업그레이드를 시도해 보세요.

최적의 일시 급증 구성 결정

다음 표에는 다양한 구성을 이해하는 데 도움이 되는 세 가지 업그레이드 설정이 나와 있습니다.

설명 구성
균형(기본값), 느리지만 중단 최소 maxSurge=1 maxUnavailable=0
빠름, 일시 급증 리소스 없음, 중단 최대 maxSurge=0 maxUnavailable=20
빠름, 일시 급증 리소스가 가장 많음, 중단을 덜 유발함 maxSurge=20 maxUnavailable=0

균형(기본값)

일시 급증 업그레이드를 활용하는 가장 간단한 방법은 maxSurge=1 maxUnavailable=0.을 구성하는 것입니다. 즉, 업그레이드 중에 노드 풀에는 일시 급증 노드를 1개만 추가할 수 있으므로 한 번에 1개의 노드만 업그레이드됩니다. 이 설정은 업그레이드 중에 pod 재시작 속도를 높이고 보수적으로 진행하므로 기존 업그레이드 구성(maxSurge=0 maxUnavailable=1)보다 훨씬 더 우수합니다.

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

대부분의 일괄 작업과 같이 워크로드가 중단에 민감하지 않은 경우 maxSurge=0 maxUnavailable=20을 사용하여 속도를 강조할 수 있습니다. 이 구성은 추가 일시 급증 노드를 실행하지 않으며 20개의 노드를 동시에 업그레이드할 수 있습니다.

빠르고 중단을 덜 유발함

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

할당량과의 관계

노드를 다시 만들 때는 추가 Compute Engine 리소스가 필요하지 않지만 노드의 일시 급증 업그레이드에는 필요합니다. 리소스 할당에는 Compute Engine 할당량이 적용됩니다. 구성에 따라 이 할당량으로 인해 동시 업그레이드 수가 제한되거나 업그레이드가 실패할 수 있습니다.

할당량에 대한 자세한 내용은 노드 업그레이드 및 할당량을 참조하세요.

업그레이드 알림 받기

GKE에서 업그레이드 알림을 Pub/Sub에 게시하여 GKE로부터 클러스터 관련 정보를 받을 수 있는 채널을 제공합니다.

자세한 내용은 클러스터 업그레이드 알림 수신을 참조하세요.

다음 단계