24.6. Pod 제거 이해
제거 임계값이 충족되고 유예 기간이 전달되면 노드에서는 신호가 정의된 임계값 미만이 될 때까지 Pod를 제거하는 프로세스를 시작합니다.
노드는 서비스 품질에 따라 Pod를 제거하도록 지정합니다. 서비스 품질이 동일한 Pod 중에서 노드는 Pod의 스케줄링 요청과 관련하여 컴퓨팅 리소스의 소비로 Pod를 평가합니다.
각 서비스 품질 수준에는 메모리 부족 점수가 있습니다. Linux OOM 킬러(메모리 부족 툴)는 점수를 사용하여 종료할 포드를 결정합니다. 자세한 내용은 QoS(Quality of Service and Out of Memory Killer) 이해를 참조하십시오.
다음 표에는 각 서비스 품질 및 관련 메모리 부족 점수가 나열되어 있습니다.
서비스 품질 | 설명 |
---|---|
| 요청과 관련하여 가장 많은 리소스를 사용하는 Pod가 먼저 실패합니다. 포드가 요청을 초과하지 않으면 전략은 리소스의 가장 큰 소비자를 대상으로 합니다. |
| 해당 리소스에 대한 요청과 관련하여 가장 많은 리소스를 사용하는 Pod는 먼저 실패합니다. 포드가 요청을 초과하지 않으면 전략은 리소스의 가장 큰 소비자를 대상으로 합니다. |
| 가장 많은 리소스를 사용하는 Pod는 먼저 실패합니다. |
노드 또는 컨테이너 엔진과 같은 시스템 데몬이 system-reserved
할당을 사용하여 예약된 것보다 더 많은 리소스를 사용하거나 노드에 남아 있는 품질만 보장된 서비스 Pod보다 더 많은 리소스를 사용하지 않는 한 다른 Pod에서 리소스 소비로 인해 보장된 품질은 제거되지 않습니다.
노드에 남은 서비스 Pod 품질만 있는 경우 노드는 노드 안정성에 영향을 미치는 Pod를 제거하고 예기치 않은 소비의 영향을 기타 보장된 서비스 Pod로 제한합니다.
로컬 디스크는 최상의 품질의 서비스 리소스입니다. 필요한 경우 노드는 Pod를 하나씩 제거하여 디스크 부족 시 디스크 공간을 회수합니다. 노드는 서비스 품질별로 Pod를 지정합니다. 노드가 사용 가능한 inode 부족에 응답하는 경우 노드에서 서비스의 품질이 가장 낮은 Pod를 제거하여 inode를 회수합니다. 노드가 사용 가능한 디스크 부족에 응답하는 경우 노드는 가장 많은 양의 로컬 디스크를 사용하는 서비스 품질로 포드를 선택한 다음 해당 Pod를 먼저 제거합니다.
24.6.1. QoS (Quality of Service and Out of Memory Killer) 이해
노드에 메모리를 회수하기 전에 OOM(시스템 out-of-memory) 이벤트가 발생하면 노드는 OOM 킬러에 따라 응답합니다.
노드는 Pod의 서비스 품질을 기반으로 하는 각 컨테이너에 대해 a oom_score_adj
값을 설정합니다.
서비스 품질 | oom_score_adj Value |
---|---|
| -998 |
| min(max(2, 1000 - (1000 * memoryRequestBytes) / machineMemoryCapacityBytes), 999) |
| 1000 |
노드에 시스템 OOM 이벤트가 발생하기 전에 노드에 메모리를 회수할 수 없는 경우 OOM 킬러 프로세스에서 OOM 점수를 계산합니다.
% of node memory a container is using + oom_score_adj = oom_score
그런 다음 노드는 점수가 가장 높은 컨테이너를 종료합니다.
서비스 품질이 가장 낮고 스케줄링 요청을 기준으로 가장 큰 메모리를 사용하는 컨테이너가 먼저 종료됩니다.
Pod 제거와 달리 OOM으로 인해 Pod 컨테이너가 종료되면 노드는 노드 재시작 정책에 따라 컨테이너를 다시 시작할 수 있습니다.