4장. 노드에 대한 Pod 배치 제어(예약)
4.1. 스케줄러를 사용하여 Pod 배치 제어
Pod 예약은 클러스터 내 노드에 대한 새 Pod 배치를 결정하는 내부 프로세스입니다.
스케줄러 코드는 새 Pod가 생성될 때 해당 Pod를 감시하고 이를 호스팅하는 데 가장 적합한 노드를 확인할 수 있도록 깔끔하게 분리되어 있습니다. 그런 다음 마스터 API를 사용하여 Pod에 대한 바인딩(Pod와 노드의 바인딩)을 생성합니다.
- 기본 Pod 예약
- OpenShift Container Platform에는 대부분의 사용자의 요구 사항을 충족하는 기본 스케줄러가 제공됩니다. 기본 스케줄러는 고유 툴과 사용자 정의 툴을 모두 사용하여 Pod에 가장 적합한 항목을 결정합니다.
- 고급 Pod 예약
새 Pod가 배치되는 위치를 더 많이 제어해야 하는 경우 OpenShift Container Platform 고급 예약 기능을 사용하여 Pod가 필요하거나 특정 노드에서 또는 특정 Pod와 함께 실행되도록 Pod를 구성할 수 있습니다.
다음 예약 기능을 사용하여 Pod 배치를 제어할 수 있습니다.
4.1.1. 기본 스케줄러 정보
기본 OpenShift Container Platform Pod 스케줄러는 클러스터 내의 노드에 새 Pod 배치를 결정합니다. Pod에서 데이터를 읽고 구성된 프로필을 기반으로 하는 노드를 찾습니다. 완전히 독립적이며 독립 실행형 솔루션으로 존재합니다. Pod를 수정하지 않습니다. Pod를 특정 노드에 연결하는 Pod 바인딩이 생성됩니다.
4.1.1.1. 기본 예약 이해
기존 일반 스케줄러는 3단계 작업에서 Pod를 호스팅할 노드를 선택하는 기본 플랫폼 제공 스케줄러 엔진에 해당합니다.
- 노드를 필터링합니다.
- 사용 가능한 노드를 지정된 제약 조건 또는 요구 사항에 따라 필터링합니다. 이는 서술자 라는 필터 함수 목록을 통해 각 노드를 실행하거나 필터를 통해 수행됩니다.
- 필터링된 노드 목록의 우선순위를 지정합니다.
- 이 작업은 일련의 우선 순위 또는 점수 점수를 통해 0 - 10 사이의 점수를 할당하는 함수를 통해 달성되며, 0은 Pod를 호스팅하는 데 적합하지 않음을 나타내고 10은 Pod를 호스팅하는 데 적합합니다. 스케줄러 구성은 각 점수 기능에 대해 간단한 가중치 (정의 숫자 값)를 사용할 수도 있습니다. 각 점수 함수에서 제공하는 노드 점수에 가중치(대부분 점수의 기본 가중치는 1임)를 곱한 다음 모든 점수에서 제공하는 각 노드의 점수를 추가하여 결합합니다. 관리자는 이 weight 속성을 사용하여 일부 점수에 높은 중요성을 부여할 수 있습니다.
- 최적의 노드 선택
- 노드는 해당 점수에 따라 정렬되며 점수가 가장 높은 노드가 Pod를 호스팅하도록 선택됩니다. 여러 노드의 점수가 동일한 경우 해당 노드 중 하나가 무작위로 선택됩니다.
4.1.2. 스케줄러 사용 사례
OpenShift Container Platform 내에서 예약하는 중요 사용 사례 중 하나는 유연한 유사성 및 유사성 방지 정책을 지원하는 것입니다.
4.1.2.1. 인프라 토폴로지 수준
관리자는 노드에 라벨을 지정하여 인프라(노드)에 다양한 토폴로지 수준을 정의할 수 있습니다. 예를 들면 region=r1
, zone=z1
, rack=s1
과 같습니다.
이러한 라벨 이름에는 특별한 의미가 없으며 관리자는 도시/빌딩/방과 같은 인프라 수준의 이름을 자유롭게 지정할 수 있습니다. 또한 관리자는 인프라 토폴로지에 원하는 수의 수준을 정의할 수 있으며 일반적으로 세 가지 수준이 적합합니다(예: region
zones
racks
). 관리자는 모든 조합에 유사성 및 유사성 방지 규칙을 지정할 수 있습니다.
4.1.2.2. 유사성
관리자는 임의의 토폴로지 수준 또는 여러 수준에도 유사성을 지정하도록 스케줄러를 구성할 수 있어야 합니다. 특정 수준의 유사성은 동일한 서비스에 속하는 모든 Pod가 동일한 수준에 속하는 노드에 예약됨을 나타냅니다. 이렇게 하면 관리자가 피어 Pod가 지리적으로 너무 멀리 떨어져 있지 않도록 할 수 있어 애플리케이션의 대기 시간 요구 사항이 처리됩니다. 동일한 유사성 그룹 내에서 Pod를 호스팅할 수 있는 노드가 없는 경우 Pod를 예약하지 않습니다.
Pod가 예약되는 위치를 더 잘 제어해야 하는 경우 노드 유사성 규칙을 사용하여 노드에서 Pod 배치 제어 및 유사성 및 유사성 방지 규칙을 사용하여 다른 Pod와 관련된 Pod 배치를 참조하십시오.
관리자는 이러한 고급 예약 기능을 사용하여 Pod를 예약할 수 있는 노드를 지정하고 기타 Pod와 관련된 예약을 강제 적용하거나 거부할 수 있습니다.
4.1.2.3. 유사성 방지
관리자는 임의의 토폴로지 수준 또는 여러 수준에도 유사성 방지를 지정하도록 스케줄러를 구성할 수 있어야 합니다. 특정 수준의 유사성 방지(또는 '분배')는 동일한 서비스에 속하는 모든 Pod가 해당 수준에 속하는 노드에 분배되어 있음을 나타냅니다. 이 경우 고가용성을 위해 애플리케이션이 잘 분배됩니다. 스케줄러는 적용 가능한 모든 노드에서 가능한 한 균등하게 서비스 Pod의 균형을 맞추려고 합니다.
Pod가 예약되는 위치를 더 잘 제어해야 하는 경우 노드 유사성 규칙을 사용하여 노드에서 Pod 배치 제어 및 유사성 및 유사성 방지 규칙을 사용하여 다른 Pod와 관련된 Pod 배치를 참조하십시오.
관리자는 이러한 고급 예약 기능을 사용하여 Pod를 예약할 수 있는 노드를 지정하고 기타 Pod와 관련된 예약을 강제 적용하거나 거부할 수 있습니다.