클러스터 자동 확장 처리

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

개요

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

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

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

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

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

클러스터 자동 확장 처리는 또한 노드 풀의 총 용량 요구 대비 각 노드의 사용량을 측정합니다. 노드에 일정 시간 동안 새 포드가 예약되지 않았고, 해당 노드에서 실행 중인 모든 포드를 풀의 다른 노드로 예약할 수 있으면, 자동 확장 처리가 포드를 이동하고 노드를 삭제합니다.

클러스터 자동 확장 처리는 포드 리소스 요청 즉, 포드가 요청한 리소스 수를 기준으로 작동합니다. 클러스터 자동 확장 처리는 포드가 실제로 사용 중인 리소스를 고려하지 않습니다. 기본적으로 클러스터 자동 확장 처리는 사용자가 제공한 포드 리소스 요청이 정확하다고 믿고, 이러한 가정을 기준으로 노드에 포드를 예약합니다.

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

작동 조건

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

  • 복제된 모든 포드를 다른 일부 노드에서 다시 시작할 수 있으며, 결과적으로 일시적인 중단이 발생할 수 있습니다. 서비스가 중단에 대해 내결함성이 없다면 자동 확장을 사용하지 않는 것이 좋습니다.
  • 사용자 또는 관리자가 노드를 수동으로 관리하지 않습니다. 사용자가 수행하는 수동 노드 관리 작업을 재정의할 수 있습니다.
  • 단일 노드 풀의 모든 노드에 동일한 라벨 집합이 포함됩니다.
  • 클러스터 자동 확장 처리는 여러 풀에서 인스턴스 유형의 상대적 비용을 고려하고, 가능한 한 비용이 가장 적은 노드 풀을 확장하려고 시도합니다. 선점형 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분의 유예 종료 기간을 지원합니다. 포드에 더 높은 유예 기간이 구성되어 있더라도 최대 10분이 지나면 포드가 항상 종료됩니다.

다음 단계

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

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

Kubernetes Engine