스케줄러의는 Kubernetes의 핵심 원칙 (C)

1. 스케줄러 소개

포드 스케줄링에 대한 책임 스케줄러. 전체 시스템 "넥서스"역할 이후에 베어링 : 적절한 노드를 선택, 새로운 포드를 만들 컨트롤러 관리자를 수신에 대한 책임, 카이 아래 : kubelet를 노드 인수 포드 수명주기에.

스케줄러 :

1) 스케줄링 알고리즘에 의해 선택된 노드 목록에서 각 포드 포드에 가장 적합한 기지국의 목록을 스케줄링하고 etcd에 정보를 기록 할

2) 포드 대응의 목록을 다음 바인딩 정보는 스케줄러는 Kubernetes 생산하고있는 API 서버 포드 통해 모니터링 kubelet, 이미지 및 출시 컨테이너를 다운로드합니다.

스케줄러

2. 예약 프로세스

1 미리 스케줄링 처리, 즉, 사용자가 상기 후보 노드의 요구 사전 구축는 Kubernetes 전략 (XXX 술어) 복수 맞게 선택된 모든 타겟 노드를 통해 선택

도 2는 바람직한 전략 (XXX 우선 순위)을 사용하여 최적의 노드를 결정하는 계산 각 후보 노드에 대한 적분에 기초하여 상기 첫 번째 단계에서 가장 높은 점수를 가지고있다.

(AlgorithmProvider) 특정 구현 플러그인 "에 의해 제공된 스케줄링 알고리즘"로드하여 스케줄링 처리는 스케줄링 알고리즘은 바람직한 전략 및 정책 미리 선택된 그룹의 집합을 포함하는 구조에 의해 제공된다.

3. 사전 선택 전략

설명 : 노드가 일정 포드의 조건을 만족하는 경우에 true를 돌려줍니다; false를 반환 노드가 예약 포드의 조건을 만족하지 않음을 나타냅니다.

3.1. NoDiskConflict

또한, 포드는 달리 참, 거짓 반환하는 경우 데이터 볼륨의 데이터 볼륨이 이미 충돌 포드는 노드와 함께 장착 존재하는지 여부를 결정.

3.2. PodFitsResources

또한, 자원의 노드 자원 또는 포드의 요구를 충족 여부를 결정, 노드가 나머지 자원 즉 전체 사용은 포드를 만족하지 않습니다.

  1. 대안 적으로, 포드 및 사용 리소스 노드 A (모두 포드에 사용되는 리소스 노드)의 합을 계산하는 단계를 포함한다.
  2. 대안으로, 노드는 자원 정보를 포함하여 노드 상태 정보를 획득한다.
  3. 만약 (또는 +> 노드의 총 자원 포드 자원 노드) 다음 즉, 남아있는 자원을 만족하지 않고, false를 반환은 포드를 사용하고 그렇지 않으면 true를 반환합니다.

3.3. PodSelectorMatches

대안 적으로, 포드는 노드, 즉 노드 탭을 선택함으로써, 태그의 선택에 의해 특정 태그를 포함하는지 여부를 판정한다.

  1. 지정되지 않은 경우 포드 spec.nodeSelector, 그것은 true를 반환합니다.
  2. 그렇지 않으면, 태그 정보, 그렇지 않은 경우는 false를 돌려, 그것이 사실 반환이 포함 된 경우 포드 spec.nodeSelector이 태그에 지정된 노드의 태그 정보를 결정, 다른 노드를 포함 얻었다.

3.4. PodFitsHost

같은 true를 반환, 그렇지 않으면 false를 반환하는 경우 또는, 결정 포드 spec.nodeName 지정된 대체 노드 이름과 노드 이름은 동일합니다.

3.5. 노드 라벨의 존재를 확인

반환 true의 경우, 그렇지 않은 경우는 false, 다른 노드 레이블 스케줄러 구성이 있는지 확인하십시오.

3.6. CheckServiceAffinity

사실이 반환하는 경우 또는, 라벨, 그렇지 않은 경우는 false를 돌려, 노드 스케줄러 구성 여부를 결정하는 단계를 포함한다.

3.7. PodFitsPorts

또한, 포트 그렇지 않으면 true를 반환하고, 반환이 거짓 점유 경우 포드 포트에 사용되는 목록이 대체 노드에 점유 여부를 결정합니다.

4. 바람직하게 정책

4.1. LeastRequestedPriority

상기 후보 노드리스트에서 가장 작은 자원 소비 (CPU + 메모리)으로 설정 노드.

4.2. CalculateNodeLabelPriority

라벨 표시된 선호도를 포함하는 노드.

4.3. BalancedResourceAllocation

후보 노드 목록에서 가장 균형 잡힌 리소스 사용 노드를 선호.

참조는 "확실한 가이드는 Kubernetes"

추천

출처www.cnblogs.com/malukang/p/11542177.html