Computer >> 컴퓨터 >  >> 체계 >> Linux

Kubernetes 스케줄러

Kubernetes 스케줄러는 정책 및 토폴로지 인식을 통해 성능, 용량 및 가용성을 제어하는 ​​오픈 소스 Kubernetes 컨테이너 오케스트레이션 플랫폼의 일부입니다.

스케줄러는 클러스터를 관리하는 API 서버에서 분리된 Kubernetes의 모놀리식 구성 요소입니다. 실제로 Kubernetes API에 대한 요청을 가로채는 플러그인 코드인 승인 컨트롤러가 아닙니다. 가상화 관리자는 Kubernetes 스케줄링을 VMware Distributed Resource Scheduler에서와 같이 VM 스케줄링과 동일한 컨테이너화로 볼 것입니다.

Kubernetes는 노드라고 하는 리소스의 논리적 그룹에 상주하는 포드로 구성된 컨테이너를 배포합니다. 워크로드별 요구 사항은 API를 통해 설정됩니다. Kubernetes 스케줄러는 Kubernetes에서 생성된 각 Pod를 노드의 적절한 IT 리소스 집합과 일치시키려고 시도합니다. 또한 해당 기능이 필요한 경우 고가용성을 위해 여러 노드에 Pod 사본을 배포할 수 있습니다.

Kubernetes 스케줄러가 선호도 및 반선호도 규칙에서 서비스 품질 설정에 이르기까지 포드의 요구 사항 및 사양에 맞는 하드웨어를 찾지 못하면 해당 포드는 예약되지 않은 상태로 유지되고 스케줄러는 시스템을 사용할 수 있을 때까지 이를 재시도합니다.


구성

Kubernetes 스케줄러는 PriorityFunction 및 FitPredicate의 두 가지 정책으로 구성할 수 있습니다. 또한 노드를 무작위로 선택할 수 있습니다. 이는 최소한의 계산 오버헤드로 리소스에 컨테이너를 할당하는 방법입니다.

FitPredicate 정책은 Kubernetes 노드에서 레이블을 감지하거나 지정된 시스템에서 이미 실행 중인 컨테이너가 요청한 리소스 수를 감지하는 동안 필수 규칙을 따릅니다. FitPredicate는 컨테이너가 주어진 하드웨어 리소스의 용량을 초과하는지 감지하는 데 도움이 됩니다. 사용자가 리소스를 0으로 선택하면 스케줄러는 항상 노드에 다른 파드를 추가할 수 있습니다.

PriorityFunction은 스케줄러가 이미 여러 시스템에 가장 잘 맞는지 확인했을 때 적용됩니다. 스케줄러가 파드를 지원할 수 있는 여러 옵션을 찾으면 PriorityFunction은 스케줄러가 최적의 시스템을 기준으로 머신의 순위를 지정하도록 지시합니다. 예를 들어 3개의 노드는 새 Pod의 요구 사항에 맞지만 하나는 다른 노드보다 더 많은 무료 리소스를 가지고 있으므로 가장 적합합니다.

Kubernetes 환경에서 이 두 정책은 여러 시스템에 걸쳐 컨테이너 워크로드를 로드 밸런싱하여 한 시스템에는 집중적인 활동이 주어지지 않고 다른 시스템은 유휴 상태로 유지되도록 합니다.