클러스터 자동 확장 처리

이 페이지에서는 워크로드의 요구에 따라 Google Kubernetes Engine(GKE) 클러스터의 노드 풀 크기를 자동으로 조절하는 방법을 설명합니다. 수요가 높으면 클러스터 자동 확장 처리가 노드 풀에 노드를 추가합니다. 수요가 적은 경우 클러스터 자동 확장 처리가 지정된 최소 크기로 축소 조정합니다. 이를 통해 필요한 경우 워크로드의 가용성을 높이고 비용을 관리할 수 있습니다. 클러스터에서 클러스터 자동 확장 처리를 구성할 수도 있습니다.

개요

GKE의 클러스터 자동 확장 처리는 워크로드의 요구에 따라 지정된 노드 풀의 노드 수를 자동으로 조절합니다. 수동으로 노드를 추가, 제거하거나 노드 풀을 과도하게 프로비저닝할 필요가 없습니다. 대신 노드 풀의 최소 및 최대 크기를 지정하면 나머지는 자동으로 지정됩니다.

클러스터를 자동 확장하는 동안 리소스가 삭제되거나 이동되면 워크로드가 일시적으로 중단될 수 있습니다. 예를 들어 워크로드가 단일 복제본이 포함된 컨트롤러로 구성되었으면, 현재 노드가 삭제된 경우 해당 복제본의 Pod를 다른 노드에서 다시 예약할 수 있습니다. 클러스터 자동 확장 처리를 사용하기 전에 워크로드가 잠재적인 중단을 견딜 수 있도록 설계하거나 중요한 Pod가 중단되지 않았는지 확인합니다.

클러스터 자동 확장 처리 작동 방식

클러스터 자동 확장 처리는 노드당 풀 기준으로 작동합니다. 클러스터 자동 확장 처리를 사용하여 노드 풀을 구성할 때 노드 풀의 최소 및 최대 크기를 지정합니다.

클러스터 자동 확장 처리는 실제 리소스 사용률 대신 노드 풀의 노드에서 실행되는 Pod의 리소스 요청에 따라 자동으로 노드 풀의 크기를 늘리거나 줄입니다. 주기적으로 Pod 및 노드의 상태를 확인하고 작업을 수행합니다.

  • 노드 풀에 노드가 충분하지 않아 Pod를 예약할 수 없는 경우 클러스터 자동 확장 처리가 노드 풀의 최대 크기까지 노드를 추가합니다.
  • 노드의 사용률이 적고 노드 풀에 있는 노드 수가 적은 상태에서도 모든 Pod를 예약할 수 있는 경우 클러스터 자동 확장 처리는 노드를 제거하고 노드 풀의 최소 크기까지 축소합니다. 노드가 시간 초과(현재 10분) 후에 정상적으로 유출되지 않으면 노드가 강제로 종료됩니다. 유예 기간은 GKE 클러스터에 구성할 수 없습니다.

Pod가 너무 적은 리소스를 요청한 경우(또는 부족할 수 있는 기본값을 변경하지 않은 경우), 그리고 노드에 리소스 부족이 발생한 경우, 클러스터 자동 확장 처리는 이러한 상황을 해결하지 않습니다. 모든 워크로드의 명시적인 리소스 요청을 수행하여 클러스터 자동 확장 처리가 가능한 한 정확하게 작동하도록 보장할 수 있습니다.

작동 조건

클러스터 자동 확장 처리는 노드 풀 크기를 조절할 때 다음 가정을 따릅니다.

  • 복제된 모든 Pod를 다른 일부 노드에서 다시 시작할 수 있으며, 결과적으로 일시적인 중단이 발생할 수 있습니다. 서비스가 중단의 내결함성이 없다면 클러스터 자동 확장 처리를 사용하지 않는 것이 좋습니다.
  • 사용자 또는 관리자가 노드를 수동으로 관리하지 않습니다. 사용자가 수행하는 수동 노드 관리 작업을 재정의할 수 있습니다.
  • 단일 노드 풀의 모든 노드에 동일한 라벨 집합이 포함됩니다.
  • 클러스터 자동 확장 처리는 여러 풀에서 인스턴스 유형의 상대적 비용을 고려하고, 가능한 한 비용이 가장 적은 노드 풀을 확장하려고 시도합니다. 선점형 VM을 포함하는 노드 풀의 감소된 비용을 고려합니다.
  • 최초 클러스터 또는 노드 풀 생성 이후 수동으로 추가된 라벨은 추적되지 않습니다. 클러스터 자동 확장 처리에 의해 생성된 노드에는 노드 풀 생성 시 --node-labels로 지정된 라벨이 할당됩니다.

영역 간 균형 조정

노드 풀에 동일한 인스턴스 유형의 관리형 인스턴스 그룹이 여러 개 포함된 경우 확장 시 클러스터 자동 확장 처리는 이러한 관리형 인스턴스 그룹 크기의 균형을 조정합니다. 이는 노드 풀의 여러 영역에 있는 관리형 인스턴스 그룹 간에 고르지 않은 노드 분배를 차단하는 데 도움이 됩니다.

클러스터 자동 확장 처리가 균형 조정을 수행하는 방법에 대한 자세한 내용은 Kubernetes 문서 자동 확장 FAQ를 참조하세요.

최소 및 최대 노드 풀 크기

클러스터의 각 노드 풀에 대해 최소 및 최대 크기를 지정할 수 있으며, 클러스터 자동 확장 처리는 이러한 경계 내에서 크기 조절을 결정합니다. 자동 확장을 사용 설정할 때 현재 노드 풀 크기가 지정된 최솟값보다 작거나 지정된 최댓값보다 크면, 자동 확장 처리는 노드 풀에 새 노드가 필요할 때까지 또는 노드 풀에서 노드를 안전하게 삭제할 수 있을 때까지 적용을 기다립니다.

자동 확장 제한

클러스터를 자동 확장할 때 노드 풀의 확장 제한은 영역 가용성에 의해 결정됩니다.

예를 들어 다음 명령어는 3개 영역 간에 6개 노드가 포함되고, 영역당 최소 노드 수가 1개이고 최대 노드 수가 4개인 자동 확장 다중 영역 클러스터를 만듭니다.

gcloud container clusters create example-cluster \
  --zone us-central1-a \
  --node-locations us-central1-a,us-central1-b,us-central1-f \
  --num-nodes 2 --enable-autoscaling --min-nodes 1 --max-nodes 4

이 클러스터의 총 크기는 3개 영역에 분산된 3~12개 노드 사이입니다. 영역 중 하나가 실패할 경우, 클러스터의 총 크기는 2~8개 노드 사이입니다.

포드 예약 및 중단 고려

축소 시에 클러스터 자동 확장 처리는 포드에 설정된 예약 및 축출 규칙을 고려합니다. 이러한 제한에 따라 자동 확장 처리로 노드가 삭제되지 않을 수 있습니다. 다음 조건의 Pod가 포함된 경우에는 노드 삭제가 방해될 수 있습니다.

애플리케이션의 PodDisruptionBudget도 자동 확장을 방지할 수 있습니다. 노드를 삭제하여 예산이 초과될 수 있으면, 클러스터가 축소되지 않습니다.

클러스터 자동 확장 처리 및 장애 방지에 대한 자세한 내용은 클러스터 자동 확장 처리 FAQ에서 다음 항목을 참조하세요.

추가 정보

클러스터 자동 확장 처리에 대한 자세한 내용은 오픈소스 Kubernetes 프로젝트의 자동 확장 처리 FAQ를 참조하세요.

제한사항

클러스터 자동 확장 처리는 다음과 같은 제한이 있습니다.

  • 클러스터 자동 확장 처리는 각각 30개의 Pod를 실행하는 노드를 1000개까지 지원합니다. 확장성 보장에 대한 자세한 내용은 확장성 보고서를 참조하세요.
  • 축소할 때는 노드를 강제 종료하기 전에 노드의 Pod를 다른 노드에 다시 예약하기 위해 클러스터 자동 확장 처리에 10분의 유예 종료 기간을 적용합니다.
  • 가끔 클러스터 자동 확장 처리가 완전히 축소되지 못하고 축소 후에 추가 노드가 존재하는 경우가 있습니다. 이 현상은 필요한 시스템 Pod가 다른 노드에 예약된 경우 발생할 수 있습니다. 이러한 Pod가 다른 노드로 이동하기 위한 트리거가 없기 때문입니다. 사용량이 적은 노드가 두 개 있지만 축소되지 않습니다. 이유가 무엇인가요?를 참조하세요. Pod 중단 예산을 구성하여 이 제한을 우회할 수 있습니다.

다음 단계