워크로드에 사용할 수 있는 리소스

이 페이지에서는 워크로드를 실행하기 위해 노드에서 사용할 수 있는 CPU 및 메모리 양을 확인하는 방법을 보여줍니다.

예약된 리소스

각 클러스터 노드에서 GKE On-Prem은 운영체제 구성요소 및 핵심 Kubernetes 구성요소에 대해 다음 리소스를 예약합니다.

  • 80밀리코어 + CPU 용량의 1%
  • 280MiB + 메모리 용량의 5%

예를 들어 노드의 기본 용량이 CPU 코어 4개와 메모리 8GiB라고 가정해 보겠습니다. GKE On-Prem 예약은 다음과 같습니다.

  • 80밀리코어 + 4개의 코어 중 1% = 120밀리코어
  • 280MiB + 8GiB의 5% = 680MiB

운영체제 및 핵심 Kubernetes 구성요소는 pod로 실행되지 않고 일반적인 프로세스로 실행됩니다. 예약된 리소스 이외의 리소스는 pod에서 사용할 수 있습니다.

제거 임곗값

Pod에 사용할 수 있는 메모리 양을 확인하려면 제거 임계값도 고려해야 합니다. GKE On-Prem은 제거 임곗값을 100MiB로 설정합니다. 즉, 노드에서 사용 가능한 메모리가 100MiB 미만이면 kubelet은 하나 이상의 pod를 제거할 수 있습니다.

할당 가능한 리소스

Pod에 사용할 수 있는 노드의 리소스를 할당 가능한 리소스라고 합니다. 할당 가능한 리소스는 다음과 같이 계산합니다.

  • Allocatable CPU = CPU Capacity - Reserved CPU
  • Allocatable Memory = Memory Capacity - Reserved Memory - Eviction Threshold

예를 들어 노드의 메모리 용량 8GiB, 예약 메모리 680MiB, 제거 임곗값 100MiB가 있다고 가정해 보겠습니다. 그러면 할당 가능한 메모리는 다음과 같습니다.

8 GiB - 680 MiB - 100 MiB = 7220 MiB

워크로드에 사용할 수 있는 리소스

노드의 할당 가능한 리소스는 pod에 사용할 수 있는 리소스입니다. 여기에는 워크로드를 실행하는 pod와 GKE On-Prem 부가기능을 실행하는 pod가 포함됩니다. 부가기능에는 인그레스 컨트롤러, 인그레스 서비스, Connect 에이전트, 네트워킹 구성요소, 로깅 구성요소 등이 있습니다.

주어진 노드에서 워크로드에 사용할 수 있는 리소스를 확인하려면 할당 가능한 리소스로 시작한 다음 추가 기능에서 사용하는 리소스를 뺍니다.

문제는 부가기능이 GKE On-Prem 클러스터의 노드 간에 균등하게 분산되지 않는다는 것입니다. 한 노드에는 세 개의 부가기능이 있고 다른 노드에는 10개의 부가기능이 있을 수 있습니다. 또한 다양한 부가기능마다 CPU와 메모리의 양이 다릅니다.

일반적으로 노드에서 실행되는 부가기능은 다음과 같습니다.

  • 200 밀리코어의 CPU
  • 100MiB의 메모리

이제 다음과 같이 워크로드의 노드에서 사용 가능한 리소스를 계산할 수 있습니다.

  • Allocatable CPU - 200 millicores
  • Allocatable memory - 100 MiB

일부 노드에는 앞서 설명한 일반 규칙보다 더 많은 부가기능용 리소스가 필요합니다. 예를 들어 한 노드는 2GiB의 메모리가 필요한 Prometheus 부가기능을 실행할 수 있습니다. 그러나 클러스터에 여러 개의 노드가 있는 경우 일반 규칙이 대부분의 노드에 적용된다고 가정하는 것이 좋습니다.

다음 단계

할당 가능 리소스의 개념에 대한 자세한 내용은 Google Cloud에서 GKE용 문서의 할당 가능 리소스를 참조하세요.