AKS를 사용하여 여러 노드 구성 및 0으로 크기 조정 사용

완료됨

Azure Kubernetes Service를 사용하면 각 노드 풀에서 실행되는 노드와 특정 워크로드를 일치시키는 다른 노드 풀을 만들 수 있습니다. 워크로드를 노드와 일치시키는 프로세스를 통해 소비를 계산하고 비용을 최적화할 수 있습니다.

여러분 회사의 드론 추적 솔루션은 수많은 컨테이너화된 애플리케이션 및 서비스의 형태로 AKS(Azure Kubernetes Service)에 배포됩니다. 여러분의 팀은 극한 기후 조건에서 비행 경로 정보를 처리하고 최적의 비행 경로를 만드는 새로운 예측 모델링 서비스를 개발했습니다. 이 서비스는 GPU 기반 VM(가상 머신) 지원이 필요하며 주중의 특정 요일에만 실행됩니다.

여러분은 비행 경로 정보를 처리하는 전용 클러스터 노드 풀을 구성하려고 합니다. 이 프로세스는 하루에 몇 시간 동안만 실행되며 GPU 기반 노드 풀을 사용하려고 합니다. 그러나 노드를 사용하는 경우에만 비용을 지불하려 합니다.

노드 풀과 AKS에서 노드를 사용하는 방법, 노드 풀에서 노드 수를 조정하는 방법을 살펴보겠습니다.

노드 풀이란?

노드 풀은 AKS 클러스터에서 동일한 구성으로 이루어진 노드 그룹입니다. 해당 노드에는 애플리케이션을 실행하는 기본 VM이 포함됩니다. AKS에서 관리되는 Kubernetes 클러스터에 두 가지 형식의 노드 풀을 만들 수 있습니다.

  • 시스템 노드 풀

  • 사용자 노드 풀

시스템 노드 풀

시스템 노드 풀은 클러스터의 제어 평면을 구성하는 중요한 시스템 Pod를 호스트합니다. 시스템 노드 풀은 노드 OS로 Linux만 사용하므로 Linux 기반 워크로드만 실행할 수 있습니다. 시스템 노드 풀의 노드는 시스템 워크로드로 예약되며 일반적으로 사용자 지정 워크로드를 실행하는 데 사용되지 않습니다. 각 AKS 클러스터는 노드가 하나 이상 포함된 시스템 노드 풀을 하나 이상 포함해야 하며 노드의 기본 VM 크기를 정의해야 합니다.

사용자 노드 풀

사용자 노드 풀은 사용자 지정 워크로드를 지원하며 Windows 또는 Linux를 노드 운영 체제로 지정할 수 있습니다. 또한 노드의 기본 VM 크기를 정의하고 특정 워크로드를 실행할 수 있습니다. 예를 들어 여러분의 드론 추적 솔루션에 범용 VM에서 구성된 노드 풀에 배포하는 일괄 처리 서비스가 있습니다. 새 예측 모델링 서비스에는 더 높은 용량을 갖춘 GPU 기반 VM이 필요합니다. 여러분은 별도의 노드 풀을 구성하고 GPU 지원 노드를 사용하도록 구성하기로 결정합니다.

노드 풀의 노드 수

노드 풀에서 최대 100개의 노드를 구성할 수 있습니다. 그러나 구성하는 노드 수는 노드당 실행되는 Pod 수에 따라 달라집니다.

예를 들어 시스템 노드 풀의 단일 노드에서 실행되는 최대 Pod 수를 30으로 설정하는 것이 중요합니다. 이 값은 클러스터 상태에 중요한 시스템 Pod를 실행하는 데 충분한 공간을 확보할 수 있도록 보장합니다. Pod 수가 해당 최솟값을 초과하면 추가 워크로드 예약 시 풀에 새 노드가 필요합니다. 따라서 시스템 노드 풀에는 풀에 하나 이상의 노드가 필요합니다. 프로덕션 환경의 경우 시스템 노드 풀에 권장되는 노드 수는 최소 3개입니다.

사용자 노드 풀은 사용자 지정 워크로드를 실행하도록 설계되었으며 30개의 Pod를 요구하지 않습니다. 사용자 노드 풀을 사용하면 풀의 노드 수를 0으로 설정할 수 있습니다.

AKS 클러스터에서 애플리케이션 수요 관리

AKS에서 Kubernetes 클러스터의 컴퓨팅 리소스 양을 늘리거나 줄이면 크기를 조정합니다. 실행해야 하는 워크로드 인스턴스의 수 또는 이러한 워크로드가 실행되는 노드 수를 확장할 수 있습니다. 두 가지 방법 중 하나로 AKS 관리형 클러스터에서 워크로드 크기를 조정할 수 있습니다. 첫 번째 옵션은 필요에 따라 Pod 또는 노드 크기를 수동으로 조정하는 것입니다. 두 번째 옵션은 자동 크기 조정을 사용하는 것으로, 가로 Pod 자동 크기 조정기를 사용해 Pod 크기를 조정하고 클러스터 자동 크기 조정기를 사용해 노드 크기를 조정할 수 있습니다.

수동으로 노드 풀의 크기를 조정하는 방법

알려진 특정 간격으로 특정 기간에 실행되는 워크로드를 실행하는 경우 노드 풀 크기를 수동으로 조정하는 것이 노드 비용을 관리하는 좋은 방법이 됩니다.

예측 모델링 서비스에 GPU 기반 노드 풀이 필요하고 매일 정오에 1시간 동안 실행된다고 가정합니다. 특정 GPU 기반 노드를 사용하여 노드 풀을 구성하고 클러스터를 사용하지 않을 때 노드 풀을 0개의 노드로 조정할 수 있습니다.

노드 풀을 만드는 데 사용할 수 있는 az aks node pool add 명령의 예시는 다음과 같습니다. 풀의 노드에 대한 Standard_NC6 GPU 기반 VM 크기를 지정하는 --node-vm-size 매개 변수를 확인합니다.

az aks nodepool add \
    --resource-group resourceGroup \
    --cluster-name aksCluster \
    --name gpunodepool \
    --node-count 1 \
    --node-vm-size Standard_NC6 \
    --no-wait

풀이 준비되면 az aks nodepool scale 명령을 사용하여 노드 풀을 0개의 노드로 조정할 수 있습니다. --node-count 매개 변수가 0으로 설정된 것을 확인합니다. 다음은 명령의 예입니다.

az aks nodepool scale \
    --resource-group resourceGroup \
    --cluster-name aksCluster \
    --name gpunodepool \
    --node-count 0

클러스터의 크기를 자동으로 조정하는 방법

Diagram that shows how the cluster autoscaler adds nodes and how the horizontal pod autoscaler adds pods.

AKS는 Kubernetes 클러스터 자동 크기 조정기를 사용하여 자동으로 워크로드의 크기를 조정합니다. 클러스터는 다음 두 가지 옵션을 사용하여 크기를 조정할 수 있습니다.

  • Horizontal Pod Autoscaler

  • 클러스터 자동 크기 조정기

먼저 Horizontal Pod Autoscaler부터 시작하여 옵션을 각각 살펴보겠습니다.

Horizontal Pod Autoscaler

Kubernetes Horizontal Pod Autoscaler를 사용하여 클러스터의 리소스 수요를 모니터링하고 워크로드 복제본 수를 자동으로 조정합니다.

Kubernetes Metrics Server는 AKS 클러스터에서 실행되는 컨트롤러, 노드 및 컨테이너로부터 메모리 및 프로세서 메트릭을 수집합니다. 해당 정보에 액세스하는 방법 중 하나는 Metrics API를 사용하는 것입니다. 가로 Pod 자동 크기 조정기는 30초마다 Metrics API를 확인하여 필요한 수요를 충족하기 위해 애플리케이션에 추가 인스턴스가 필요한지 여부를 결정합니다.

회사에 드론 비행 경로를 예약하는 일괄 처리 서비스도 있다고 가정합니다. 서비스가 요청으로 넘쳐나고 배달 백로그를 구축하여 고객에게 지연과 불만을 야기하는 것을 알 수 있습니다. 일괄 처리 서비스 복제본 수를 늘리면 주문을 적시에 처리할 수 있습니다.

문제를 해결하려면 가로 Pod 자동 크기 조정기를 구성하여 필요한 경우 서비스 복제본 수를 늘립니다. 일괄 처리 요청 수가 감소하면 서비스 복제본 수가 줄어듭니다.

그러나 Horizontal Pod Autoscaler는 클러스터에서 구성된 노드 풀에서 사용 가능한 노드의 Pod 크기만 조정합니다.

클러스터 자동 크기 조정기

가로 Pod 자동 크기 조정기가 노드 풀의 기존 노드에 또 다른 Pod를 예약할 수 없는 경우 리소스 제약 조건이 적용됩니다. 클러스터 자동 크기 조정기를 사용하여 제약 조건이 있는 시간에 클러스터 노드 풀의 노드 수를 조정해야 합니다. 클러스터 자동 크기 조정기는 정의된 메트릭을 확인하고 필요한 컴퓨팅 리소스에 따라 노드 수를 늘리거나 줄입니다.

클러스터 자동 크기 조정기는 Horizontal Pod Autoscaler와 함께 사용됩니다.

클러스터 자동 크기 조정기는 스케일 업 및 스케일 다운 이벤트를 모두 모니터링하여 리소스 수요가 변경됨에 따라 Kubernetes 클러스터가 노드 풀의 노드 수를 변경할 수 있도록 합니다.

여러 크기 조정 규칙을 사용하여 각 노드 풀을 구성합니다. 예를 들어 자동 크기 조정을 허용하도록 하나의 노드 풀만 구성하거나 노드 풀을 특정 수의 노드로만 확장하도록 구성할 수 있습니다.

Important

노드 풀에서 클러스터 자동 크기 조정기를 사용하면 노드 수를 0으로 조정할 수 없습니다. 대신 최소 개수를 0으로 설정하여 클러스터 리소스에 저장할 수 있습니다.

지식 점검

1.

세 가지 중요한 구성 요소를 포함하는 소프트웨어 솔루션이 있다고 가정합니다. 첫 번째 구성 요소는 웹 애플리케이션입니다. 두 번째는 온라인 주문을 처리하는 서비스입니다. 세 번째는 필요한 경우에만 실행되고 GPU 기반 VM이 필요한 비디오 렌더링 및 분석 서비스입니다. 비용을 최적화하려면 솔루션을 관리하기 위해 AKS(Azure Kubernetes Service) 클러스터에 몇 개의 노드 풀을 배포해야 할까요?

2.

다음 문을 작성합니다. Kubernetes 클러스터 자동 크기 조정기는 다음을 조정합니다...