[쿠버네티스] - Manual Scheduling

chancehee·2023년 12월 17일
0

쿠버네티스

목록 보기
12/17
post-thumbnail

[ 개요 ]

  • Pod은 일반적으로 kube-scheduler에 의해 자동으로 어떤 Node에 배포될지 결정된다.
  • 하지만, 스케줄러가 없다면? 엔지니어의 의도에 따라 배포하고 싶을 경우는 어떻게 해야할까?

[ Scheduler 동작과정 ]

  1. 스케줄러는 모든 Pod을 보면서 nodeName 필드가 설정되어있지 않은 Pod을 탐색
  2. 스케줄링 알고리즘을 실행하여 Pod에 적합한 Node를 식별
  3. 식별된 Node의 이름으로 nodeName 필드에 추가

[ Scheduler가 없다면? ]

  • Pod은 계속해서 Pending 상태가 된다.
  • 엔지니어는 스케줄러 없이 매뉴얼하게 직접 NodePod을 할당할 수 있다.
    (Pod 생성시점에만, nodeName을 지정할 수 있다.)
    (이미 Pod이 생성되어 있고, Node에 할당하고 싶다면 Binding 객체를 생성 후 Binding API을 사용해서 POST 요청을 보내는 방법도 있다.)

[ 실습 ]

apiVersion: v1
kind: pod
metadata:
	name: nginx
    labels:
    	name: nginx
spec:
	nodeName: node01 # node 이름 
	containers:
    - name: nginx
      image: nginx
      ports:
      	- containerPort: 8080
  • kubectl get nodes
  • kubectl get pods
  • kubectl describe pod nginx
  • kubectl get pods -n kube-system
  • kubectl replace --force -f nginx.yaml : delete & create
  • kubectl get pods --watch

참고자료

0개의 댓글