제14장. 포드 스케줄링
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
스케줄러는 클러스터 구성 요소 로, 포드 를 실행할 노드를 선택하는 역할을 담당합니다. 이 장에서는 일반적인 스케줄링 알고리즘과 스케줄링 결정에 영향을 미치는 유연 요구사항(soft requirement) 및 엄격 요구사항(hard requirement)을 표현할 수 있게 해주는 쿠버네티스 개념에 대해 알아봅니다.
Pod 스케줄링 알고리즘
최초에 최종 사용자가 생성한 Pod에는 할당된 노드가 없습니다. 이는 스케줄러 클러스터 구성 요소의 역할입니다. 스케줄러는 스케줄링 루프에서 실행되며 스케줄링되지 않은 Pod를 감시합니다. 그런 다음 사용 가능한 노드를 평가하여 Pod에 가장 적합한 노드를 선택합니다.
적합한 노드 찾기는 필터링과 점수 부여라는 두 단계로 진행됩니다. 필터링 단계 는 Pod 실행이 가능한 노드 목록을 결정합니다(예: 사용 가능한 하드웨어 용량 확인). 점수 부여 단계 는 남은 노드들을 순위 매겨 워크로드 실행에 가장 적합한 노드를 선택합니다. 스케줄링 결정에는 리소스 요구사항, 어피니티 및 안티어피니티 지정 등이 포함됩니다. Pod 스케줄링 알고리즘의 시각화는 그림 14-1에서 확인할 수 있습니다.
그림 14-1. 포드 스케줄링 알고리즘
Pod와 그 컨테이너는 노드 결정에 도움이 되는 요구 사항을 정의할 수 있습니다. 어떤 노드도 요구 사항을 충족할 수 없는 경우, 스케줄러가 다시 확인할 때까지 Pod는 스케줄링되지 않은 상태로 유지됩니다. 그렇지 않으면 스케줄러는 가장 높은 점수를 받은 노드를 선택하여 Pod를 할당합니다.
다중 노드 개발 클러스터 설정
스케줄링 요구사항의 효과는 다중 노드 클러스터 에서 시연해 보임으로써 가장 잘 설명됩니다. 본 장의 나머지 부분에서는 다음과 같이 제어 평면 노드 1개와 작업자 노드 3개로 구성된 클러스터를 사용할 것입니다:
$ kubectl get nodes NAME STATUS ROLES AGE VERSION multi-node Ready control-plane 2m33s v1.32.2 multi-node-m02 Ready <none> 2m22s v1.32.2 multi-node-m03 Ready <none> 2m15s v1.32.2 multi-node-m04 Ready <none> 2m9s v1.32.2
쿠버네티스 환경을 사용한 다중 노드 클러스터 설정은 상당히 쉽게 구현할 수 있습니다. minikube나 kind와 같은 대부분의 개발 클러스터 구현체 는 단일 노드 이상을 시작하는 옵션을 제공합니다. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access