다음을 통해 공유


AKS(Azure Kubernetes Service)에서 노드 리소스 예약

이 문서에서는 AKS(Azure Kubernetes Service)에서 노드 리소스 예약에 대해 알아봅니다.

리소스 예약

AKS는 노드 리소스를 사용하여 노드가 클러스터의 일부로 작동하도록 지원합니다. 이를 사용하면 노드의 총 리소스와 AKS의 할당 가능한 리소스 간에 불일치가 발생할 수 있습니다.

노드 성능과 기능을 유지하기 위해 AKS는 각 노드에 CPU메모리라는 두 가지 형식의 리소스를 예약합니다. 노드가 리소스에서 더 커질수록 사용자가 배포한 Pod를 관리할 필요성이 높아지므로 리소스 예약도 증가합니다. 노드에서 리소스 예약을 변경할 수 없다는 점에 유의해야 합니다.

CPU 예약

예약된 CPU는 노드 형식 및 클러스터 구성에 따라 달라지며, 추가 기능 실행으로 인해 할당 가능한 CPU가 줄어들 수 있습니다. 다음 표는 밀리코어 단위의 CPU 예약을 보여 줍니다.

호스트의 CPU 코어 수 1 코어 코어 2개 코어 4개 8개 코어 16개 코어 32코어 64코어
Kube 예약 CPU(밀리코어) 60 100 140 180 260 420 740

메모리 예약

AKS에서 예약된 메모리는 다음 두 값의 합계로 구성됩니다.

AKS 1.29 이상

  • kubelet 디먼에는 기본적으로 memory.available < 100Mi 제거 규칙이 있습니다. 이 규칙은 노드에 항상 100Mi 이상을 할당할 수 있도록 보장합니다. 호스트가 사용 가능한 메모리 임계값보다 낮으면 kubelet은 실행 중인 Pod 중 하나의 종료를 트리거하고 호스트 컴퓨터에서 메모리를 확보합니다.

  • 메모리 예약 비율20MB * 노드에서 지원되는 최대 Pod + 50MB 또는 총 시스템 메모리 리소스의 25% 중 더 작은 값에 따라 설정됩니다.

    :

    • VM(가상 머신)이 8GB의 메모리를 제공하고 노드가 최대 30개의 Pod를 지원하는 경우 AKS는 kube 예약을 위해 20MB * 30 Max Pods + 50MB = 650MB를 예약합니다. Allocatable space = 8 GB - 0.65 GB (kube-reserved) - 0.1 GB (eviction threshold) = 7.25 GB or 90.625% allocatable.
    • VM이 4GB의 메모리를 제공하고 노드가 최대 70개의 Pod를 지원하는 경우, 20MB * 70개의 최대 Pod + 50MB = 1450MB 미만이므로 AKS는 kube-reserved를 위해 25% * 4GB = 1000MB를 예약합니다.

    자세한 내용은 AKS 클러스터의 노드당 최대 Pod 구성을 참조하세요.

1.29 이전 AKS 버전

  • kubelet 디먼에는 기본적으로 memory.available < 750Mi 제거 규칙이 있습니다. 이 규칙은 노드에 항상 750Mi 이상을 할당할 수 있도록 보장합니다. 호스트가 사용 가능한 메모리 임계값보다 낮으면 kubelet은 실행 중인 Pod 중 하나의 종료를 트리거하고 호스트 컴퓨터에서 메모리를 확보합니다.
  • kubelet 디먼이 제대로 작동하기 위한 메모리 예약의 회귀 비율(kube-reserved)
    • 처음 4GB 메모리의 25%
    • 다음 4GB 메모리의 20%(최대8GB)
    • 다음 8GB 메모리의 10%(최대16GB)
    • 다음 112GB 메모리의 6%(최대128GB)
    • 128GB 이상의 메모리 중 2%

참고 항목

AKS는 계산된 메모리의 일부가 아닌 Windows 노드의 시스템 프로세스를 위해 추가 2GB를 예약합니다.

메모리 및 CPU 배정 규칙은 다음을 위해 설계되었습니다.

  • 클러스터 상태에 중요한 일부 호스팅 시스템 Pod를 포함하여 에이전트 노드를 정상 상태로 유지합니다.
  • 노드에서 할당 가능한 메모리 및 CPU를 Kubernetes 클러스터의 일부가 아닌 경우보다 더 적게 보고하도록 합니다.

예를 들어 노드에서 7GB를 제공하는 경우 750Mi 하드 제거 임곗값을 포함하여 할당할 수 없는 메모리의 34%를 보고합니다.

0.75 + (0.25*4) + (0.20*3) = 0.75 GB + 1 GB + 0.6 GB = 2.35 GB / 7 GB = 33.57% reserved

또한 기본 노드 OS는 Kubernetes 자체에 대한 예약 외에도 OS 기능을 유지하기 위해 많은 CPU 및 메모리 리소스를 예약합니다.

관련 모범 사례는 AKS의 기본 스케줄러 기능 모범 사례를 참조하세요.

다음 단계