스케줄링 작동원리
- NodeName은 쿠버네티스가 자동적으로 추가해줌
- Scheduler는 모든 pod을 훑어보고, NodeName이 지정되지 않은것을 찾아봄
- 스케줄링 알고리즘 실행하여 Pod이 적절한 Node를 식별해줌
- 적절한 Node가 식별되면 Node에서 Binding object를 생성하고, NodeName속성을 설정함으로써 Pod을 예약함
Scheduler 없다면?!
- 만약에 cluster에 Scheduler 가 없다면?
- Pending 상태이고, 직접 YAML파일에 NodeName 설정함
Pod이 이미 생성되었다면?!
- Pod 이 이미 생성되었고, node를 할당하길 윈한다면?
- K8s는 중간에 NodeName 수정을 허락하지 않음
- Binding object(Pod-bind-definition.yaml)를 생성해서 API가 binding된 POST request를 보내준다. ????
- 즉, 스케줄러가 하는일을 흉내 내면됨
단, curl 명령어를 사용할 땐 YAML 파일을 JSON포맷으로 변환시켜줘야 한다.
curl --header "Content-Type:Application/json" --request POST --data '{"apiVersion":"v1", "kind": ~ ~}'
출처: Udemy CKA