[CKA] 파드 수동 스케줄링

스케줄러 없이 nodeName 또는 Binding API로 파드를 노드에 할당하는 방법을 정리합니다.

스케줄러는 API 서버를 감시하다가 spec.nodeName이 비어 있는 파드를 찾아 적합한 노드에 할당합니다. 조건을 만족하는 노드가 없으면 파드는 Pending 상태로 대기합니다.

스케줄러가 없거나 직접 할당해야 할 때는 파드를 만들기 전에 nodeName을 지정할 수 있습니다.

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  nodeName: node01
  containers:
    - name: nginx
      image: nginx

이미 생성된 파드의 nodeName은 일반 업데이트로 바꿀 수 없습니다. 기존 파드를 삭제하고 수정한 매니페스트로 다시 만들거나 Binding API를 사용합니다.

kubectl describe pod nginx
kubectl get pods --watch
kubectl replace --force -f nginx.yaml

replace --force는 기존 객체를 삭제한 뒤 다시 만들기 때문에 일시 중단과 객체 UID 변경을 고려해야 합니다.