Scheduling
Scheduling 작동 방법
- Pod의 Yaml파일에는 NodeName 필드가 있음
- 스케줄러가 모든 Pod를 보고 NodeName이 없는 Pod들을 스케줄링 후보로 선정함
- Scheduling 알고리즘을 통해 어떤 Node에 Scheduling할지 결정
- 실행중인 Pod를 다른 Node로 옮기는 것은 불가능
- 스케줄링 - 필터링 - 우선순위 결정 - Pod 바인딩(이때부터 해당 노드의 kubelet이 이 Pod의 생성 및 관리)
Scheduling할 스케줄러가 없는 경우
- 직접 노드에 할당(Pod Yaml파일에 직접 NodeName 지정)
- Pod 생성시에만 지정 가능
- 바인딩 객체 생성
- 바인딩 API에 Post 요청
curl --header "Content-Type:application/json" --request POST --data '{"apiVersion": "v1", "kind": "Biding", ...}
http://$SERVER/api/v1/namespaces/default/pods/$PODNAME/binding/
- 바인딩 API에 Post 요청
apiVersion: v1
kind: Binding
metadata:
name: nginx
target:
apiVersion: v1
kind: Node
name: node02(실제 노드)
Practice
- nginx.yaml이라는 Pod 정의 파일을 가지고 Pod를 생성
- kubectl create -f nginx.yaml
- Pod를 수동으로 node01 노드에 스케줄링
- kubectl delete pod nginx
- vi nginx.yaml
- spec아래에 nodeName 추가 (nodeName: node01)
- kubectl create -f nginx.yaml
- 동일한 Pod를 controlplane 노드에 스케줄링
- vi nginx.yaml
- nodeName을 controlplane으로 변경
- Pod 삭제 후 재생성 OR kubectl replace --force -f nginx.yaml
- kubectl get pod - o wide로 확인
- 스케줄러 여부 확인
- kubectl get pods -n kube-system
'CKA' 카테고리의 다른 글
| [Udemy CKA - Core Concepts] Taints and Tolerations (0) | 2024.08.22 |
|---|---|
| [Udemy CKA - Core Concepts] Labels and Selectors (0) | 2024.08.22 |
| [Udemy CKA - Core Concepts] Imperative vs Declarative (0) | 2024.08.19 |
| [Udemy CKA - Core Concepts] Namespaces (0) | 2024.08.19 |
| [Udemy CKA - Core Concepts] Service (0) | 2024.08.11 |