이 페이지에서는 Google Distributed Cloud에서 워크로드를 실행하기 위해 노드에서 사용 가능한 CPU와 메모리를 결정하는 방법을 보여줍니다.
예약된 리소스
각 클러스터 노드에서 Google Distributed Cloud는 운영체제 구성요소 및 핵심 Kubernetes 구성요소에 다음 리소스를 예약합니다.
- 80 밀리코어 + CPU 용량의 1%
- 330 MiB + 메모리 용량의 5%
예를 들어 노드의 기본 용량이 CPU 코어 4 개와 메모리 8 GiB라고 가정해 보겠습니다. 그런 다음 Google Distributed Cloud는 다음을 예약합니다.
- 80 밀리코어 + 4 개의 코어 중 1% = 120 밀리코어
- 330 MiB+ 8 GiB의 5% = 730 MiB
운영체제 및 핵심 Kubernetes 구성요소는 포드로 실행되지 않고 일반적인 프로세스로 실행됩니다. 예약된 리소스 이외의 리소스는 포드에서 사용할 수 있습니다.
제거 임계값
포드에 사용할 수 있는 메모리 양을 확인하려면 제거 임계값도 고려해야 합니다.
Google Distributed Cloud는 제거 기준점을 100MiB로 설정합니다. 즉, 노드에서 사용 가능한 메모리가 100 MiB 미만이면 kubelet
은 하나 이상의 포드를 제거할 수 있습니다.
할당 가능한 리소스
포드에 사용할 수 있는 노드의 리소스를 할당 가능한 리소스라고 합니다. 할당 가능한 리소스는 다음과 같이 계산합니다.
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
워크로드에 사용할 수 있는 리소스
노드의 할당 가능한 리소스는 포드에 사용할 수 있는 리소스입니다. 여기에는 워크로드를 실행하는 포드와 Google Distributed Cloud 부가기능을 실행하는 포드가 포함됩니다. 부가기능에는 인그레스 컨트롤러, 인그레스 서비스, Connect 에이전트, 네트워킹 구성요소, 로깅 구성요소 등이 있습니다.
주어진 노드에서 워크로드에 사용할 수 있는 리소스를 확인하려면 할당 가능한 리소스로 시작한 다음 추가 기능에서 사용하는 리소스를 뺍니다.
문제는 부가기능이 Google Distributed Cloud 클러스터 노드 간에 균등하게 분산되지 않는다는 점입니다. 한 노드에는 세 개의 부가기능이 있고 다른 노드에는 10개의 부가기능이 있을 수 있습니다. 또한 다양한 부가기능마다 CPU와 메모리의 양이 다릅니다.
일반적으로 노드에서 실행되는 부가기능은 다음과 같습니다.
- 200 밀리코어의 CPU
- 100MiB의 메모리
이제 다음과 같이 워크로드의 노드에서 사용 가능한 리소스를 계산할 수 있습니다.
Allocatable CPU - 200 millicores
Allocatable memory - 100 MiB
일부 노드에는 앞서 설명한 일반 규칙보다 더 많은 부가기능용 리소스가 필요합니다. 예를 들어 한 노드는 2GiB의 메모리가 필요한 Prometheus 부가기능을 실행할 수 있습니다. 그러나 클러스터에 여러 개의 노드가 있는 경우 일반 규칙이 대부분의 노드에 적용된다고 가정하는 것이 좋습니다.
다음 단계
할당 가능 리소스의 개념에 대한 자세한 내용은 Google Cloud에서 GKE용 문서의 할당 가능 리소스를 참조하세요.