클러스터 자동 확장 처리

VMware용 Anthos 클러스터(GKE On-Prem) 버전 1.8에서는 사용자 클러스터의 노드 풀에 대한 클러스터 자동 확장을 미리보기로 사용할 수 있습니다. 클러스터 자동 확장은 워크로드 수요를 기준으로 지정된 노드 풀의 노드 수 크기를 조절합니다. 수동으로 노드를 추가, 삭제하거나 노드 풀을 과도하게 프로비저닝할 필요가 없습니다. 대신 노드 풀의 최소 및 최대 크기를 지정하면 나머지는 자동으로 지정됩니다.

클러스터를 자동 확장하는 동안 리소스가 삭제되거나 이동되면 워크로드가 일시적으로 중단될 수 있습니다. 예를 들어 워크로드가 단일 Pod이고 현재 노드가 삭제되었으면 Pod가 다른 노드로 다시 예약됩니다. 자동 확장을 사용 설정하기 전 잠재적인 중단을 견디거나 중요한 Pod가 중단되지 않도록 워크로드를 설계합니다.

클러스터 자동 확장은 노드 풀에 대해 기본적으로 사용 중지되어 있습니다. 클러스터를 만드는 동안 또는 클러스터를 만든 후 gkectl update 명령어를 사용하여 사용자 클러스터 노드 풀에 대해 자동 확장을 사용 설정 및 사용 중지할 수 있습니다.

클러스터 자동 확장 작동 방법

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

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

  • 노드 풀에 노드가 충분하지 않아 Pod를 예약할 수 없는 경우 클러스터 자동 확장 처리가 노드 풀의 최대 크기까지 노드를 추가합니다.
  • 노드의 사용률이 적고 노드 풀에 있는 노드 수가 적은 상태에서도 모든 Pod를 예약할 수 있는 경우 클러스터 자동 확장 처리는 노드를 제거하고 노드 풀의 최소 크기까지 축소합니다. 노드를 정상적으로 드레이닝할 수 없으면 노드가 강제로 종료되고 연결된 Kubernetes 관리 디스크가 안전하게 분리됩니다.

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

작동 조건

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

  • 복제된 모든 포드를 다른 일부 노드에서 다시 시작할 수 있으며, 결과적으로 일시적인 중단이 발생할 수 있습니다. 서비스에 중단이 허용되지 않는 경우에는 클러스터 자동 확장 처리를 사용하지 않는 것이 좋습니다.
  • 사용자 또는 관리자는 노드를 수동으로 관리하지 않습니다. 클러스터 자동 확장 처리가 노드 풀에 대해 설정되어 있으면 노드 풀의 replicas 필드를 재정의할 수 없습니다.
  • 단일 노드 풀의 모든 노드에 동일한 라벨 집합이 포함됩니다.
  • 클러스터 자동 확장 처리는 여러 노드 풀에서 인스턴스 유형의 상대적 비용을 고려하고, 가능한 한 낭비가 가장 적은 방법으로 노드 풀을 확장하려고 시도합니다.

최소 및 최대 노드 풀 크기

autoscaling.minReplicasautoscaling.maxReplicas 값을 사용하여 클러스터의 각 노드 풀에 대해 최소 및 최대 크기를 지정할 수 있습니다. 클러스터 자동 확장 처리는 이러한 경계 내에서 크기 조절을 결정합니다. 자동 확장이 없는 기본 노드 수인 노드 풀의 replicas 값은 지정된 minReplicas 값보다 커야 하며, 지정된 maxReplicas 값보다 작아야 합니다. 자동 확장 처리를 사용 설정할 때 클러스터 자동 확장 처리는 새 노드가 노드 풀에 필요할 때까지 또는 노드 풀에서 노드를 안전하게 삭제할 수 있을 때까지 적용을 기다립니다.

Pod 예약 및 중단 고려

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

  • Pod의 어피니티 또는 안티어피니티 규칙에 따라 재예약이 방지됩니다.
  • Pod에 로컬 스토리지가 포함됩니다.
  • Pod가 배포, StatefulSet, 작업 또는 ReplicaSet와 같은 컨트롤러로 관리되지 않습니다.
  • Pod가 kube-system 네임스페이스에 있고 PodDisruptionBudget을 포함하지 않습니다.

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

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

제한사항

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

  • 노드 풀에서 복제본을 0으로 축소하는 것은 허용되지 않습니다.
  • 어느 시점에서든 사용자 클러스터 워커 노드 합계는 최소 3개 이상이어야 합니다. 즉, 모든 자동 확장된 노드 풀에 대한 minReplicas 값의 합계는 모든 자동 확장되지 않은 노드 풀에 대한 replicas 값의 합계를 포함하여 최소 3개 이상이어야 합니다.
  • 가끔 클러스터 자동 확장 처리가 완전히 축소되지 못하고 축소 후에 추가 노드가 존재하는 경우가 있습니다. 이 현상은 필요한 시스템 포드가 다른 노드에 예약된 경우 발생할 수 있습니다. 이러한 포드가 다른 노드로 이동하기 위한 트리거가 없기 때문입니다. 사용량이 적은 노드가 두 개 있지만 축소되지 않습니다. 이유가 무엇인가요?를 참조하세요. Pod 중단 예산을 구성하여 이 제한을 우회할 수 있습니다.
  • 변경된 필터를 사용한 커스텀 예약은 지원되지 않습니다.
  • Pod의 -10 아래에 PriorityClass 값이 있으면 노드가 확장되지 않습니다. 클러스터 자동 확장 처리가 Pod 우선순위 및 선점으로 작동하는 방식 자세히 알아보기