AKS(Azure Kubernetes Service)에서 클러스터 자동 크기 조정기 사용
AKS에서 애플리케이션 수요에 맞추려면 워크로드를 실행하는 노드 수를 조정해야 할 수 있습니다. 클러스터 자동 크기 조정기 구성 요소는 리소스 제약 조건으로 인해 예약할 수 없는 클러스터의 Pod를 감시합니다. 클러스터 자동 크기 조정기가 문제를 검색하면 애플리케이션 요구 사항에 맞게 노드 풀의 노드 수의 크기를 조정합니다. 또한 노드에서 실행 중인 Pod가 부족한지 정기적으로 확인하고 필요에 따라 노드 수의 크기를 조정합니다.
이 문서에서는 오픈 소스 Kubernetes 버전을 기반으로 하는 AKS에서 클러스터 자동 크기 조정기를 사용하도록 설정하고 관리하는 방법을 보여 줍니다.
시작하기 전에
이 문서에는 Azure CLI 버전 2.0.76 이상이 필요합니다. az --version
을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.
AKS 클러스터에서 클러스터 자동 크기 조정기 사용
Important
클러스터 자동 크기 조정기는 Kubernetes 구성 요소입니다. AKS 클러스터는 가상 머신 확장 집합을 노드에 사용하지만, 확장 집합 자동 크기 조정에 대한 설정을 수동으로 사용하거나 편집하지 마세요. Kubernetes 클러스터 자동 크기 조정기가 필수 크기 조정 설정을 자동으로 관리하게 두세요. 자세한 내용은 노드 리소스 그룹의 AKS 리소스를 수정할 수 있나요?를 참조하세요.
새 클러스터에서 클러스터 자동 크기 조정기를 사용하도록 설정합니다.
az group create
명령을 사용하여 리소스 그룹을 만듭니다.az group create --name myResourceGroup --location eastus
az aks create
명령을 사용하여 AKS 클러스터를 만들고,--enable-cluster-autoscaler
매개 변수를 사용하고 노드--min-count
및--max-count
를 지정하여 클러스터의 노드 풀에서 클러스터 자동 크기 조정기를 사용하도록 설정 및 구성합니다. 다음 명령 예는 가상 머신 확장 집합이 지원하는 단일 노드가 있는 클러스터를 만들고, 클러스터 자동 크기 조정기를 사용하도록 설정하고, 최소 1개, 최대 3개의 노드를 설정합니다.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 1 \ --vm-set-type VirtualMachineScaleSets \ --load-balancer-sku standard \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3 \ --generate-ssh-keys
클러스터를 만들고 클러스터 자동 크기 조정기 설정을 구성하는 데 몇 분 정도 걸립니다.
기존 클러스터에서 자동 크기 조정기 사용
az aks update
명령을 사용하여 기존 클러스터를 업데이트하고,--enable-cluster-autoscaler
매개 변수를 사용하고 노드--min-count
및--max-count
를 지정하여 노드 풀에서 클러스터 자동 크기 조정기를 사용하도록 설정 및 구성합니다. 다음 명령 예는 기존 AKS 클러스터를 업데이트하여 클러스터의 노드 풀에서 클러스터 자동 크기 조정기를 사용하도록 설정하고 최소 1개, 최대 3개의 노드를 설정합니다.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3
클러스터를 업데이트하고 클러스터 자동 크기 조정기 설정을 구성하는 데 몇 분 정도 걸립니다.
클러스터에서 클러스터 자동 크기 조정기 사용 안 함
az aks update
명령과--disable-cluster-autoscaler
매개 변수를 사용하여 클러스터 자동 크기 조정기를 사용하지 않도록 설정합니다.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --disable-cluster-autoscaler
클러스터 자동 크기 조정기가 사용하지 않도록 설정되면 노드가 제거되지 않습니다.
참고 항목
az aks scale
명령을 사용하여 클러스터 자동 크기 조정기를 사용하지 않도록 설정한 후 수동으로 클러스터의 크기를 조정할 수 있습니다. 수평 Pod 자동 조정기를 사용하는 경우 클러스터 자동 크기 조정기가 사용되지 않는 상태로 계속 실행되지만, 모든 노드 리소스가 사용 중인 경우 결국 Pod를 예약할 수 없습니다.
클러스터에서 클러스터 자동 크기 조정기 다시 사용
az aks update
명령을 사용하고 --enable-cluster-autoscaler
, --min-count
및 --max-count
매개 변수를 지정하여 기존 클러스터에서 클러스터 자동 크기 조정기를 다시 사용하도록 설정할 수 있습니다.
노드 풀에서 클러스터 자동 크기 조정기 사용
여러 노드 풀에서 클러스터 자동 크기 조정기 사용
여러 노드 풀과 함께 클러스터 자동 크기 조정기를 사용할 수 있으며 각 개별 노드 풀에서 클러스터 자동 크기 조정기를 사용하도록 설정하고 고유한 자동 크기 조정 규칙을 전달할 수 있습니다.
az aks nodepool update
명령을 사용하여 기존 노드 풀의 설정을 업데이트합니다.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1 \ --update-cluster-autoscaler \ --min-count 1 \ --max-count 5
노드 풀에서 클러스터 자동 크기 조정기 사용 안 함
az aks nodepool update
명령과--disable-cluster-autoscaler
매개 변수를 사용하여 노드 풀에서 클러스터 자동 크기 조정기를 사용하지 않도록 설정합니다.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1 \ --disable-cluster-autoscaler
노드 풀에서 클러스터 자동 크기 조정기 다시 사용.
az aks nodepool update
명령을 사용하고 --enable-cluster-autoscaler
, --min-count
및 --max-count
매개 변수를 지정하여 노드 풀에서 클러스터 자동 크기 조정기를 다시 사용하도록 설정할 수 있습니다.
참고 항목
여러 영역에 걸쳐 있고 영역과 관련된 예약 기능(예: 볼륨 토폴로지 예약)을 활용하는 노드 풀과 함께 클러스터 자동 크기 조정기를 사용하려는 경우 영역당 하나의 노드 풀을 두고 자동 크기 조정기 프로필을 통해 --balance-similar-node-groups
를 사용 설정하는 것이 좋습니다. 이렇게 하면 자동 크기 조정기가 성공적으로 스케일 업되고 노드 풀 크기의 균형을 유지할 수 있습니다.
클러스터 자동 크기 조정기 설정 업데이트
애플리케이션 요구 사항이 변경됨에 따라 클러스터 자동 크기 조정기 노드 수를 조정하여 효율적으로 크기를 조정해야 할 수 있습니다.
az aks update
명령을 사용하여 노드 수를 변경하고,--update-cluster-autoscaler
매개 변수를 사용하고 업데이트된 노드--min-count
및--max-count
를 지정하여 클러스터 자동 크기 조정기를 업데이트합니다.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --update-cluster-autoscaler \ --min-count 1 \ --max-count 5
참고 항목
클러스터 자동 크기 조정기는 스폿 제거 중 또는 AKS API에서 최소 개수 값을 변경하는 경우와 같이 외부 요인으로 인해 실제 수가 최솟값 아래로 떨어지는 경우 최소 개수를 적용합니다.
클러스터 자동 크기 조정기 프로필 사용
클러스터 전체 자동 크기 조정기 프로필의 기본값을 변경하여 클러스터 자동 크기 조정기의 세부 정보를 구성할 수 있습니다. 예를 들어 10분 후 노드 사용량이 저조하면 스케일 다운 이벤트가 발생합니다. 15분마다 실행되는 워크로드가 있는 경우 15분 또는 20분 후에 사용량이 저조한 노드를 스케일 다운하도록 자동 크기 조정기 프로필을 변경할 수 있습니다. 클러스터 자동 크기 조정기를 사용하도록 설정하면 다른 설정을 지정하지 않는 한 기본 프로필이 사용됩니다.
Important
클러스터 자동 크기 조정기 프로필은 클러스터 자동 크기 조정기를 사용하는 모든 노드 풀에 영향을 줍니다. 노드 풀별로 자동 크기 조정기 프로필을 설정할 수는 없습니다. 프로필을 설정하면 클러스터 자동 크기 조정기가 사용하도록 설정된 기존 노드 풀이 즉시 프로필을 사용하기 시작합니다.
클러스터 자동 크기 조정기 프로필 설정
다음 표에서는 클러스터 자동 크기 조정기 프로필에 사용할 수 있는 설정을 나열합니다.
설정 | 설명 | 기본값 |
---|---|---|
scan-interval |
스케일 업 또는 다운을 위해 클러스터를 다시 평가하는 빈도입니다. | 10초 |
scale-down-delay-after-add |
스케일 업 후 스케일 다운 평가가 다시 시작되기 전까지의 경과 시간입니다. | 10분 |
scale-down-delay-after-delete |
노드 삭제 후 스케일 다운 평가가 다시 시작되기 전까지의 경과 시간입니다. | scan-interval |
scale-down-delay-after-failure |
스케일 다운 실패 후 스케일 다운 평가가 다시 시작되기 전까지의 경과 시간입니다. | 3분 |
scale-down-unneeded-time |
불필요한 노드를 스케일 다운하기 전까지의 경과 시간입니다. | 10분 |
scale-down-unready-time |
준비되지 않은 노드를 스케일 다운하기 전까지의 경과 시간입니다. | 20분 |
ignore-daemonsets-utilization |
스케일 다운에 대한 리소스 사용률을 계산할 때 DaemonSet Pod가 무시되는지 여부입니다. | false |
daemonset-eviction-for-empty-nodes |
DaemonSet Pod가 빈 노드에서 정상적으로 종료되는지 여부입니다. | false |
daemonset-eviction-for-occupied-nodes |
DaemonSet Pod가 비어있지 않은 노드에서 정상적으로 종료되는지 여부입니다. | true |
scale-down-utilization-threshold |
요청된 리소스의 합계를 용량으로 나눈 노드 사용률 수준으로, 이 수준의 노드는 스케일 다운 대상으로 고려할 수 있습니다. | 0.5 |
max-graceful-termination-sec |
노드를 스케일 다운하려고 할 때 클러스터 자동 크기 조정기가 Pod 종료를 위해 대기하는 최대 시간(초) | 600초 |
balance-similar-node-groups |
비슷한 노드 풀을 검색하고 두 노드 풀의 노드 수를 균형 있게 조정합니다. | false |
expander |
스케일 업에 사용하는 노드 풀 확장기의 유형입니다. 가능한 값은 most-pods , random , least-waste 및 priority 입니다. |
random |
skip-nodes-with-local-storage |
true 인 경우 클러스터 자동 크기 조정기는 로컬 스토리지가 포함된 Pod가 있는 노드를 삭제하지 않습니다(예: EmptyDir 또는 HostPath). |
false |
skip-nodes-with-system-pods |
true 인 경우 클러스터 자동 크기 조정기는 kube-system에서 Pod가 있는 노드를 삭제하지 않습니다(DaemonSet 또는 미러 Pod 제외). |
true |
max-empty-bulk-delete |
동시에 삭제할 수 있는 빈 노드의 최대 수입니다. | 10개 노드 |
new-pod-scale-up-delay |
Kubernetes 스케줄러가 모든 Pod를 예약하기 전에 CA가 작동하지 않도록 하려는 버스트/일괄 처리 규모와 같은 시나리오의 경우, 어느 정도 시간이 지나기 전에 예약되지 않은 Pod를 CA가 무시하도록 지시할 수 있습니다. | 0초 |
max-total-unready-percentage |
클러스터에서 준비되지 않은 노드의 최대 비율입니다. 이 비율을 초과하면 CA가 작업을 중단합니다. | 45% |
max-node-provision-time |
노드가 프로비전될 때까지 자동 크기 조정기가 대기하는 최대 시간입니다. | 15분 |
ok-total-unready-count |
max-total-unready-percentage에 관계없이 준비되지 않은 노드가 허용되는 수입니다. | 노드 3개 |
참고 항목
ignore-daemonsets-utilization, daemonset-eviction-for-empty-nodes 및 daemonset-eviction-for-occupied-nodes 매개 변수는 API 버전 2024-05-01의 GA입니다. CLI를 사용하여 이러한 플래그를 업데이트하는 경우 버전 2.63 이상을 사용하고 있는지 확인하세요.
새 클러스터에 클러스터 자동 크기 조정기 프로필 설정
az aks create
명령을 사용하여 AKS 클러스터를 만들고cluster-autoscaler-profile
매개 변수를 사용하여 클러스터 자동 크기 조정기 프로필을 설정합니다.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 1 \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3 \ --cluster-autoscaler-profile scan-interval=30s \ --generate-ssh-keys
기존 클러스터에 클러스터 자동 크기 조정기 프로필 설정
az aks update
명령과cluster-autoscaler-profile
매개 변수를 사용하여 기존 클러스터에 클러스터 자동 크기 조정기를 설정합니다. 다음 예에서는 검사 간격 설정을 30초로 구성합니다.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --cluster-autoscaler-profile scan-interval=30s
공격적인 스케일 다운을 위해 클러스터 자동 크기 조정 프로필을 구성합니다.
참고 항목
짧은 간격으로 빈번한 스케일 아웃 및 스케일 인을 경험하는 클러스터의 경우 공격적인 스케일 다운은 권장되지 않습니다. 이러한 상황에서는 노드 프로비전 시간이 길어질 수 있기 때문입니다. scale-down-delay-after-add
를 늘리면 수신 워크로드를 처리할 수 있도록 노드를 더 오래 유지하여 이러한 상황에 도움이 될 수 있습니다.
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--cluster-autoscaler-profile scan-interval=30s,scale-down-delay-after-add=0m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=3m,scale-down-unready-time=3m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=1000,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m
버스트 워크로드에 대한 클러스터 자동 크기 조정 프로필 구성
az aks update \
--resource-group "myResourceGroup" \
--name myAKSCluster \
--cluster-autoscaler-profile scan-interval=20s,scale-down-delay-after-add=10m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=5m,scale-down-unready-time=5m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=100,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m
클러스터 자동 크기 조정기 프로필을 기본값으로 초기화
az aks update
명령을 사용하여 클러스터 자동 크기 조정기 프로필을 초기화합니다.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --cluster-autoscaler-profile ""
클러스터 자동 크기 조정기 로그 및 상태 검색
클러스터 자동 크기 조정기에서 로그 및 상태 업데이트를 검색하여 자동 크기 조정기 이벤트를 진단하고 디버깅할 수 있습니다. AKS는 사용자를 대신하여 클러스터 자동 크기 조정기를 관리하고 관리형 컨트롤 플레인에서 실행합니다. 컨트롤 플레인 노드를 사용하도록 설정하면 클러스터 자동 크기 조정기의 로그와 작업을 볼 수 있습니다.
여기 지침을 사용하여 클러스터 자동 크기 조정기 로그를 Log Analytics에 푸시하도록 리소스 로그에 대한 규칙을 설정합니다. 로그 옵션을 선택할 때
cluster-autoscaler
확인란을 선택했는지 확인합니다.클러스터에서 로그 섹션을 선택합니다.
다음 예제 쿼리를 Log Analytics에 입력합니다.
AzureDiagnostics | where Category == "cluster-autoscaler"
CLI에서 트리거되지 않은 클러스터 자동 크기 조정기 강화를 봅니다.
kubectl get events --field-selector source=cluster-autoscaler,reason=NotTriggerScaleUp
CLI에서 클러스터 자동 크기 조정기 경고 이벤트를 봅니다.
kubectl get events --field-selector source=cluster-autoscaler,type=Warning
클러스터 자동 크기 조정기는 또한
configmap
에 상태(cluster-autoscaler-status
라고 함)를 기록합니다. 다음kubectl
명령을 사용하여 이러한 로그를 검색할 수 있습니다.kubectl get configmap -n kube-system cluster-autoscaler-status -o yaml
자세한 내용은 Kubernetes/autoscaler GitHub 프로젝트 FAQ를 참조하세요.
클러스터 자동 크기 조정기 메트릭
Azure Monitor Prometheus용 관리 서비스 추가 기능을 사용하여 클러스터 자동 크기 조정기의 로그 및 작업을 확인하려면 컨트롤 플레인 메트릭(미리 보기)을 사용하도록 설정할 수 있습니다.
다음 단계
이 문서에서는 AKS 노드 수를 자동으로 조정하는 방법을 설명했습니다. Horizontal Pod Autoscaler를 사용하여 애플리케이션을 실행하는 Pod 수를 자동으로 조정할 수도 있습니다. Horizontal Pod Autoscaler를 사용하는 단계는 AKS에서 애플리케이션 크기 조정을 참조하세요.
클러스터 리소스 사용률을 개선하고 다른 Pod를 위해 CPU 및 메모리를 확보하려면 수직형 Pod 자동 크기 조정기를 참조하세요.
Azure Kubernetes Service