작업자 노드 리소스 예약
워커 노드의 리소스 여유량을 파악하면 클러스터 용량을 계획하고 포드 스케줄링 문제를 해결하는 데 도움이 됩니다.
IBM Cloud Kubernetes Service에서는 각 작업자 노드에서 사용 가능한 컴퓨팅 리소스를 제한하는 컴퓨팅 리소스 예약을 설정합니다. 예약 메모리, CPU 리소스 및 프로세스 ID(PID)는 작업자 노드의 팟(Pod)에서 사용될 수 없으며, 각 작업자 노드의 할당 가능한 리소스를 줄입니다. 초기에 팟(Pod)을 배치하는 경우, 작업자 노드에 할당 가능한 리소스가 충분히 없으면 배치에 실패합니다. 또한 팟(Pod)이 메모리 및 CPU에 대해 작업자 노드 리소스 한계를 초과하면 팟(Pod)이 제거됩니다. Kubernetes 에서 이 한도를 ‘하드 퇴거 임계값’이라고 부릅니다. PID 한계를 초과하는 팟(Pod)의 경우 팟(Pod)은 할당 가능한 만큼의 PID를 수신하지만 PID를 기반으로 제거되지는 않습니다.
자원 매장량을 언제 확인해야 하는가
다음과 같은 경우 워커 노드의 리소스 여유량을 확인하십시오:
- 클러스터 용량 계획 수립 및 필요한 워커 노드 수 결정
- 포드 스케줄링 실패 또는 강제 종료 문제 해결
- 워크로드에 사용할 수 있는 리소스 계산하기
- 클러스터에 워커 노드를 추가해야 할지 판단하기
워커 노드가 예약한 양보다 사용 가능한 PID, CPU 또는 메모리가 부족할 경우, Kubernetes 는 충분한 컴퓨팅 리소스와 PID를 확보하기 위해 포드를 강제 종료하기 시작합니다. 작업자 노드가 사용 가능한 경우 팟(Pod)은 다른 작업자 노드로 다시 스케줄됩니다. 포드가 자주 강제 종료된다면, 클러스터에 워커 노드를 추가하거나 포드에 리소스 제한을 설정하십시오.
자원 예약 등급 이해하기
워커 노드에 할당되는 리소스는 해당 워커 노드가 제공하는 PID, CPU 및 메모리의 양에 따라 달라집니다. IBM Cloud Kubernetes Service 에서는 다음 표와 같이 PID, CPU 및 메모리 티어를 정의하고 있습니다. 워커 노드에 여러 계층의 컴퓨팅 리소스가 포함된 경우, 각 계층별로 PID, CPU 및 메모리 리소스의 일정 비율이 할당됩니다.
팟이 너무 많은 PID를 사용하지 않게 하거나 kubelet 및 기타 IBM Cloud Kubernetes Service 시스템 컴포넌트에 사용 가능한 PID가 충분하도록 클러스터에는 프로세스 ID(PID) 예약 및 한계도 있습니다. PID 예약 또는 한계에 도달하면 Kubernetes는 기존 PID를 확보할 수 있는 충분한 프로세스가 제거될 때까지 새 PID를 생성하거나 할당하지 않습니다. 작업자 노드의
총 PID 양은 작업자 노드의 메모리 GB당 약 8,000 PID에 해당합니다. 예를 들어 메모리가 16GB인 작업자 노드에는 약 128,000개의 PID가 있습니다(16 × 8,000 = 128,000).
워커 노드에서 현재 얼마나 많은 컴퓨팅 리소스가 사용되고 있는지 확인하려면 다음 명령을 실행하세요. kubectl top node를 실행하십시오.
| 메모리 티어 | 예약된 % 또는 양 | b3c.4x16 작업자 노드(16GB) 예 |
mg1c.28x256 작업자 노드(256GB) 예 |
|---|---|---|---|
| 첫 번째 4GB(0 - 4GB) | 25% 메모리 | 1GB | 1GB |
| 다음 4GB(5 - 8GB) | 20% 메모리 | 0.8GB | 0.8GB |
| 다음 8GB(9 - 16GB) | 10% 메모리 | 0.8GB | 0.8GB |
| 다음 112GB(17 - 128GB) | 6% 메모리 | 해당사항 없음 | 6.72GB |
| 남은 GB(129GB+) | 2% 메모리 | 해당사항 없음 | 2.54GB |
kubelet 퇴거를 위한 추가 예약 |
100MB | 100MB(일정 양) | 100MB(일정 양) |
| 총 예약 | (변경됨) | 총 16GB 중 2.7GB | 총 256GB 중 11.96GB |
| CPU 티어 | 예약된 % 또는 양 | b3c.4x16 작업자 노드(4 코어) 예 |
mg1c.28x256 작업자 노드(28 코어) 예 |
|---|---|---|---|
| 첫 번째 코어(코어 1) | 6% 코어 | 0.06 코어 | 0.06 코어 |
| 다음 2 코어(코어 2 - 3) | 1% 코어 | 0.02 코어 | 0.02 코어 |
| 다음 2 코어(코어 4 - 5) | 0.5% 코어 | 0.005 코어 | 0.01 코어 |
| 나머지 코어(코어 6+) | 0.25% 코어 | 해당사항 없음 | 0.0575 코어 |
| 총 예약 | (변경됨) | 총 4 코어 중 0.085 코어 | 총 28 코어 중 0.1475 코어 |
| 총 PID | % 예약 | 팟(Pod)에 사용 가능 % |
|---|---|---|
| < 200,000 | 20% PID | 35% PID |
| 200,000 - 499,999 | 10% PID | 40% PID |
| ≥ 500,000 | 5% PID | 45% PID |
b3c.4x16 작업자 노드: 126,878 PID |
25,376 PID(20%) | 44,407 PIDS (35%) |
mg1c.28x256 작업자 노드: 2,062,400 PID |
103,120 PID(5%) | 928,085 PID(45%) |
| 인프라 제공자 | 디스크 | % 디스크 예약 |
|---|---|---|
| 클래식 | 보조 디스크 | 10% |
| VPC | 부트 디스크 | 10% |
샘플 작업자 노드 값은 예제에만 제공됩니다. 실제 사용량은 조금 다를 수 있습니다.