자격증/CKA

[CKA] Udemy 53. Manual Scheduling

14ben 2024. 7. 5. 23:03
728x90

Manual Pod Scheduling

  • 노드에 수동으로 Pod를 스케줄링하는 다양한 방법을 살펴볼 예정
  • 클러스터에 스케줄러가 없을 때 어떻게 해야 할지에 대해 논의
  • 내장된 스케줄러를 사용하지 않고, 직접 Pod를 스케줄링하는 방법에 대해 설명할 것임.

 

 

스케줄러의 백엔드 작동 방식

  • 간단한 Pod 정의 파일을 시작점으로 설명
  • 모든 Pod는 기본적으로 설정되지 않은 Node Name이라는 필드를 가지고 있음.

  • Pod 매니페스트 파일을 만들 때 이 필드를 명시하지 않음.
  • Kubernetes는 이 필드를 자동으로 추가함.
  • 스케줄러는 모든 Pod를 검사하여 이 속성이 설정되지 않은 Pod를 찾음.
  • 이러한 Pod들은 스케줄링 후보가 됨.
  • 스케줄링 알고리즘을 실행하여 적합한 노드를 식별.
  • 노드가 식별되면, 노드 이름 속성을 노드의 이름으로 설정하여 Pod를 노드에 스케줄링.
  • 이 과정은 바인딩 객체를 생성함으로써 이루어짐.

 

 

스케줄러가 없을 때의 대처 방법

  • 스케줄러가 없으면, Pod는 대기 상태에 계속 머무름.

  • 이를 해결하기 위해 수동으로 Pod를 노드에 할당할 수 있음.
  • 스케줄러 없이 Pod를 스케줄링하는 가장 쉬운 방법은 Pod 사양 파일을 생성할 때
  • Node Name 필드를 노드의 이름으로 설정하는 것임.

  • 이렇게 하면 Pod는 지정된 노드에 할당됨.
  • 단, Node Name은 생성 시에만 지정할 수 있음.

 

 

이미 생성된 Pod의 노드 할당 방법

  • 이미 생성된 Pod에 노드를 할당하려면 Node Name 속성을 수정할 수 없음.
  • 대신 바인딩 객체를 생성하여 Pod의 바인딩 API에 POST 요청을 보내는 방법이 있음.
  • 바인딩 객체에서 타겟 노드를 노드 이름으로 지정함.
  • 바인딩 객체를 JSON 형식으로 변환하여 Pod의 바인딩 API에 데이터로 POST 요청을 보냄.

 

 

 

 

728x90