22. Scheduling - Manual Scheduling

2024. 10. 27. 18:37·Kubernetes
이 글은 아래 자료를 참고하여 작성되었습니다.

Udemy [Certified Kubernetes Administrator (CKA) with Practice Tests]

 

1. Scheduler가 Pod을 Scheduling하는 방법

  1. Kubernetes의 스케줄러는 모든 Pod를 순회하면서 NodeName 필드가 설정되지 않은 Pod를 찾아낸다. => 스케줄링의 후보
  2. 스케줄러는 알고리즘을 사용하여 Pod에 가장 적합한 노드를 선택한 후, 해당 Pod의 NodeName 속성을 노드의 이름으로 설정하여 스케줄링을 완료한다. 이 과정에서 바인딩 객체를 생성하여 Pod를 노드에 바인딩하게 된다.
  3. 클러스터에 스케줄러가 없으면, Pod는 계속 대기(pending) 상태로 남게 된다. 이러한 상황에서는 Pod를 수동으로 할당해야 하며, 이는 자동 스케줄링보다 관리와 유지보수가 어렵다.

 

2. 스케줄러가 없을 때 Manul Scheduling 하는 방법

  1.  Pod을 생성할 때: Pod 정의 파일에서 NodeName 필드를 노드의 이름으로 설정하면 Pod는 해당 노드에 할당된다. 이 방법은 Pod를 생성할 때만 적용할 수 있다.
  2. 이미 생성된 Pod을 특정 노드에 할당하고 싶을 때:
    1. Kubernetes는 생성된 Pod의 NodeName 속성을 수정하는 것을 허용하지 않는다. 이 경우, 바인딩 객체를 생성하고 Pod의 바인딩 API에 POST 요청을 보내는 방식을 사용하여 Pod를 특정 노드에 할당할 수 있다. 이는 실제 스케줄러가 수행하는 작업과 유사하다.
    2. 이미 존재하는 Pod을 삭제하고, yaml에 nodeName을 변경하여 새로운 node에 띄울 수 있다.
kubectl delete pod my-pod
kubeclt create pod -f pod.yaml  # pod.yaml의 spec.nodeName이 업데이트 되어 있음

# replace --force를 활용하면 한번에 가능
kubectl replace --force -f pod.yaml   # pod.yaml의 spec.nodeName이 업데이트 되어 있음

## 참고: pod의 status변화를 모니터링하고 싶을 때 -w or --watch 옵션을 주면 된다
kubectl get pods -w

 

3. YAML 예제

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
  nodeName: my-node

'Kubernetes' 카테고리의 다른 글

24. Scheduling - Taints & Tolerations  (1) 2024.11.24
23. Scheduling - Labels and Selectors  (0) 2024.10.27
21. Core Concepts - Kube Proxy  (1) 2024.09.25
20. Core Concepts - Kubelet  (3) 2024.09.25
19. Core Concepts - Kube Scheduler  (0) 2024.09.25
'Kubernetes' 카테고리의 다른 글
  • 24. Scheduling - Taints & Tolerations
  • 23. Scheduling - Labels and Selectors
  • 21. Core Concepts - Kube Proxy
  • 20. Core Concepts - Kubelet
SerenaDev
SerenaDev
나의 기술블로그 입니다.
  • SerenaDev
    나의 기술블로그
    SerenaDev
    • 분류 전체보기 (33)
      • FastAPI (1)
      • Iceberg (6)
      • Kubernetes (24)
      • ETC (1)
      • 독서 (1)
  • hELLO· Designed By정상우.v4.10.0
SerenaDev
22. Scheduling - Manual Scheduling
상단으로

티스토리툴바