Print
카테고리: [ Cloud Computing & MSA ]
조회수: 15761

1. 개요

Kubernetes의 Scheduler에 대해 알아본다.


2. 원리


3. Pod 할당에 가장 적절한 노드 선택

Pod에 할당할 가장 적절한 노드 선택은 노드 필터링과 노드 가중치 점수를 계산하여 결정한다.

3.1. 노드 필터링

Pod 할당에 필요한 조건(예, CPU, 메모리 등)을 충족하는 노드를 선택하는 과정이다. 이러한 조건을 predicates라고 부른다. 이 조건들을 predicates.go 파일이나 scheduler_algorithm.md 파일에서 확인 가능하다.

3.2. 노드 가중치 점수 계산

3.1.의 노드 필터링을 통해 feasible 노드를 선정한 후에는, 그 노드 가운데 최종적으로 어떤 노드를 선택한지 고른다. 여기서는 스코어 방식이 사용되며 여러 가중치를 계산하는 함수를 통해 최종 점수가 나온다.

그런데 노드 수가 엄청 많으면 계산을 위한 Scheduler의 성능 저하가 발생할 수 있기 때문에 Kubernetes 버전에 따라서는 percentageOfNodesToScore라는 기능을 통해 일정 수의 노드만큼만 점수를 부여한다.

3.3. NodeSelector

특정 노드에 스케줄링되도록 nodeSelector를 설정할 수 있다.

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    disktype: ssd