클러스터 자동 확장 처리

이 페이지에서는 Google Kubernetes Engine의 클러스터 자동 확장 처리 기능을 설명합니다. 클러스터를 자동 확장하는 방법을 알아보려면 클러스터 자동 확장을 참조하세요.

개요

GKE의 클러스터 자동 확장 처리는 실행하려는 작업 부하의 요구에 따라 클러스터 크기를 자동으로 조절합니다. 자동 확장을 사용 설정한 경우, 사용자가 실행 용량이 충분하지 않는 새 포드를 만들었으면, GKE가 클러스터에 새 노드를 자동으로 추가합니다. 반대로 클러스터에 있는 노드의 사용률이 낮고, 해당 포드를 다른 노드에서 실행할 수 있으면, GKE가 노드를 삭제합니다.

클러스터 자동 확장을 사용하면 모든 특정 시점에 필요한 리소스에 대해서만 비용을 지불하고, 요구가 증가하면 추가 리소스를 자동으로 얻을 수 있습니다.

클러스터를 자동 확장하는 동안 리소스가 삭제되거나 이동될 때는 서비스에 일부 중단이 발생할 수 있습니다. 예를 들어 서비스가 단일 복제본이 포함된 컨트롤러로 구성되었으면, 현재 노드가 삭제된 경우 해당 복제본의 포드를 다른 노드에서 다시 시작할 수 있습니다. 자동 확장을 사용 설정하려면 먼저 서비스가 일시적인 중단을 허용할 수 있는지 확인해야 합니다.

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

클러스터 자동 확장 처리는 노드당 풀 기준으로 작동합니다. 각 노드 풀에 대해 자동 확장 처리는 예약되지 않았으며, 사용 가능한 리소스가 있는 노드를 기다리는 포드가 있는지 여부를 주기적으로 확인합니다. 이러한 포드가 존재하면, 자동 확장 처리가 노드 풀 크기를 조절하여 대기 중인 포드를 예약할 수 있는지 확인한 후 해당 노드 풀을 확장합니다.

클러스터 자동 확장 처리는 또한 노드 풀의 총 용량 요구 대비 각 노드의 사용량을 측정합니다. 노드에 일정 시간 동안 새 pod가 예약되지 않았고 해당 노드에서 실행 중인 모든 pod를 풀의 다른 노드로 예약할 수 있으면 자동 확장 처리가 pod를 이동하고 노드를 삭제합니다. 10분 후에 노드가 정상적으로 드레이닝되지 않는 경우 노드가 강제로 종료됩니다. 유예 기간은 GKE 클러스터에 구성할 수 없습니다.

클러스터 자동 확장 처리는 pod 리소스 요청을 기반으로 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개 노드 사이입니다.

포드 예약 및 중단 고려

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

  • 포드의 어피니티 또는 안티어피니티 규칙에 따라 재예약이 방지됩니다.
  • 포드에 로컬 저장소가 포함됩니다.
  • 포드가 배포, StatefulSet, 작업 또는 ReplicaSet와 같은 컨트롤러로 관리되지 않습니다.

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

추가 정보

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

제한사항

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

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

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Kubernetes Engine 문서