scheduler 없이 pod 배치 하기

Damian·2022년 1월 11일

kubernetes

목록 보기
7/7

1) 주제

scheduler 없이 수동으로 pod 를 node에 스케줄하는 방법

2) 테스트 진행

2-1) pod 배포

nginx.yaml
명령어: $ kubectl apply -f nginx.yaml

2-2) pod 상태 확인

pod가 pending 상태이다.

pod describe 확인시 특별한 Event는 보이지 않지만

Node: <none> 상태인걸 볼 수 있다.

-> ControlPlane Node의 컴포넌트들을 확인해볼 필요가 있다.


2-3) ControlPlane component 확인

ControlPlane 에는 4개의 기본 component가 있어야 한다.

  • apiserver
  • etcd
  • controller
  • scheduler

pod 를 확인해보면 scheduler pod가 없다.

문제 확인

scheduler 가 없어서 pod가 worker node에 배치 되지 않아 pending

된걸로 확인 된다.

[해결방안]

수동으로 pod를 node에 배치 한다.

3. POD 수동 배치하기

수동 배치는 2가지방법이 있다.

  • pod yaml 파일에 nodeName 설정
  • Binding yaml 파일 만들어서 적용

3-1) pod yaml 파일에 nodeName 설정

pending 상태인 기존 pod 를 삭제한다.

nginx.yaml 파일에 nodeName 한줄을 추가 후 배포한다.

확인시 설정해준 node01로 잘 배치된다

주의
yaml 파일에 node 이름을 오타로 작성해도 적용되지만

존재하지 않는 node 이름이기 때문에 pending이 유지된다.

3-2) Binding yaml 파일 생성

Binding 파일을 만들떄 metadata: name은 pod 이름을 적어 주어야한다.

controlplane에 pod 배치 테스트 해본다.

명령어: $ kubectl apply -f binding.yaml
아래 이미지에 error 가 나는 이유는 Binding은 object가 아니라 연결만

해주는 역할 만 하기 떄문에 구현되지 않는다는 문구로 보인다.

controlplane에 pod가 잘 배치 된걸 볼 수 있다.

4) 결론

  1. pod 가 배치 되지 않을 경우 controlplane 을 먼저 확인

  2. 기본 pod가 떠있는지 확인

  3. pod가 쩌있는데 container도 잘 떠있는지 확인

  4. 스케줄러가 없을 경우 문제 해결전 급하게 pod를 배치해야하는경우 nodeName 을 추가하여 임시 배포할 수 있다.

profile
oepenpen

0개의 댓글