표준 클러스터 업그레이드


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

자동 프로비저닝에서 클러스터 업그레이드가 작동하는 방식에 대한 상세 설명은 클러스터 자동 프로비저닝을 참조하세요.

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

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

클러스터를 출시 채널에 등록하면 클러스터의 제어 영역 업그레이드를 완료한 후 노드 풀의 업그레이드를 시작하기 전에 잠깐 동안만(보통 며칠이며 현재 버전에 따라 다름) 제외하고 노드가 항상 동일한 버전의 GKE를 실행합니다. 자세한 정보는 출시 노트를 참조하세요.

클러스터 업그레이드

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

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

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

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

노드 풀 업그레이드

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

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

노드 풀을 업그레이드하는 동안에는 업그레이드를 취소하지 않는 한 클러스터 구성을 변경할 수 없습니다.

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

GKE는 가능한 경우 자동 업그레이드 중에 유지보수 기간 또는 유지보수 제외를 준수합니다. 수동 업그레이드는 구성된 유지보수 기간 및 유지보수 제외를 무시합니다.

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

  1. 일시 급증 업그레이드가 사용 설정된 경우 GKE는 버전이 업그레이드된 새 일시 급증 노드를 만들고 이 노드가 제어 영역에 등록될 때까지 기다립니다.
  2. GKE는 업그레이드할 기존 노드(대상 노드)를 선택합니다. 대상 노드가 차단되고 드레이닝이 시작됩니다. 이때 GKE는 대상 노드에서 새 pod를 예약할 수 없습니다.
    • PodDisruptionBudget은 최대 1시간 동안 적용됩니다. 대상 노드가 1시간 후에 완전히 드레이닝되지 않으면 GKE는 나머지 Pod를 삭제하고 업그레이드 프로세스를 계속 진행합니다.
    • GracefulTerminationPeriod는 1시간으로 제한됩니다.
  3. 제어 영역은 컨트롤러가 관리하는 Pod를 다른 노드로 다시 예약합니다. 다시 예약할 수 없는 Pod는 예약될 때까지 대기중 단계로 유지됩니다.
  4. 일시 급증 노드가 생성되었으면 대상 노드는 삭제됩니다. 일시 급증 노드가 생성되지 않았으면 드레이닝된 후 GKE가 대상 노드를 업그레이드한 다음 업그레이드된 노드가 제어 영역에 등록될 때까지 기다립니다.

자동 업그레이드

표준 클러스터를 만들면 기본적으로 클러스터 및 노드 풀에서 자동 업그레이드가 사용 설정됩니다.

Google은 클러스터 제어 영역 보안을 담당하고, 새 GKE 버전이 자동 업그레이드 대상으로 선택된 경우 클러스터를 업그레이드합니다. 인프라 보안은 GKE에서 높은 우선순위로, 이러한 제어 영역이 정기적으로 업그레이드되며 사용 중지할 수 없습니다. 그러나 유지보수 기간 및 유지보수 제외를 적용하여 제어 영역과 노드의 업그레이드를 일시적으로 정지할 수 있습니다.

공유 책임 모델에 따라 노드, 컨테이너, Pod의 보안은 고객이 책임집니다. 노드 자동 업그레이드는 기본적으로 사용 설정됩니다. 권장되지는 않지만 노드 자동 업그레이드 사용 중지는 가능합니다. 노드 자동 업그레이드를 선택 해제해도 클러스터의 제어 영역 업그레이드가 차단되지 않습니다. 노드 자동 업그레이드를 선택 해제한 경우 클러스터의 노드가 클러스터 버전과 호환되는 버전을 실행하고 해당 버전이 Kubernetes 버전 및 버전 차이 지원 정책을 준수하는지 확인해야 합니다.

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

클러스터의 노드 풀이 클러스터 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 대응 방법

기본 Compute Engine 인스턴스 관련 문제 또는 Kubernetes 관련 문제로 인해 노드 풀 자동 업그레이드가 실패할 수 있습니다. 예를 들어 다음 상황에서는 자동 업그레이드가 실패할 수 있습니다.

  • 구성된 maxSurge 설정이 Compute Engine 리소스 할당량을 초과합니다.
  • 새 일시 급증 노드가 클러스터 제어 영역에 등록되지 않았습니다.
  • 노드 드레이닝 또는 삭제에 시간이 너무 오래 걸렸습니다.

개별 노드 업그레이드 관련 문제가 발생하면 각 시도 사이의 간격을 점차적으로 늘리면서 GKE가 업그레이드를 여러 번 재시도합니다. 노드 풀의 노드 업그레이드가 실패하면 GKE가 업그레이드된 노드를 롤백하지 않습니다. 대신 GKE는 모든 노드가 성공적으로 업그레이드될 때까지 노드 풀 자동 업그레이드를 다시 시도합니다.

일시 급증 노드 요청이 Compute Engine 할당량을 초과하기 때문에 노드 업그레이드가 실패할 경우 GKE는 할당량을 충족시키고 업그레이드를 계속하기 위해 시도되는 동시 일시 급증 노드 수를 줄입니다.

업그레이드 알림 받기

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

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

다음 단계