DevOps/Kubernetes

파드가 노드에 배포되는 단계

우드의개발개발 2024. 10. 15. 17:21

Kubernetes에서 파드가 배포되는 과정은 스케줄러에 의해 관리되며, 파드를 클러스터 내의 적합한 노드에 배치하는 절차입니다. 이 과정은 네 단계(Scheduling Procedure)로 나뉘고, 각 단계는 특정 플러그인(Plugins for each Stage)을 통해 처리됩니다. 

1. Scheduling Queue (스케줄링 큐)

파드를 생성하면, 해당 파드는 먼저 스케줄링 큐에 들어갑니다. 이 큐는 아직 할당되지 않은 파드들의 대기열 역할을 하며, 파드가 실행 가능한 상태가 될 때까지 유지됩니다.

관련 플러그인:

  • PrioritySort: 파드의 우선순위를 기준으로 큐에서 대기 중인 파드를 정렬합니다. 우선순위가 높은 파드가 먼저 처리되도록 보장합니다.

2. Filtering (필터링)

스케줄러는 큐에서 선택된 파드에 대해 클러스터 내의 노드를 검사하고, 각 노드가 해당 파드를 실행할 수 있는지 여부를 결정하는 필터링 단계를 수행합니다. 노드의 자원 상황이나 특정 노드의 상태에 따라 파드를 실행할 수 없는 노드는 필터링됩니다.

관련 플러그인:

  • NodeResourceFit: 각 노드의 CPU, 메모리 등의 리소스가 파드를 실행할 충분한 자원이 있는지 검사합니다.
  • NodeName: 파드에 특정 노드를 지정한 경우, 지정된 노드가 유효한지 확인합니다.
  • NodeUnschedulable: 노드가 일정한 조건에 의해 스케줄링 불가능한 상태인지 확인합니다. 예를 들어, 관리자가 해당 노드를 스케줄링되지 않도록 설정한 경우입니다.

3. Scoring (점수화)

필터링 단계를 거쳐 파드를 배치할 수 있는 가능한 노드들이 결정되면, 스케줄러는 각 노드에 점수를 매기는 점수화 단계를 진행합니다. 이 점수는 다양한 요소에 기반하여 계산되며, 점수가 가장 높은 노드가 파드를 배포할 노드로 선택됩니다.

관련 플러그인:

  • NodeResourceFit: 노드의 자원이 얼마나 효율적으로 사용될지를 평가하여 점수를 부여합니다.
  • ImageLocality: 파드에서 필요한 컨테이너 이미지가 노드에 이미 있는지 여부에 따라 점수를 부여합니다. 이미지가 이미 존재하면 다운로드 시간이 줄어들어 더 높은 점수를 받습니다.

4. Binding (바인딩)

점수화에서 가장 적합한 노드가 선택되면, 해당 파드는 그 노드에 바인딩되며, 이 단계에서 파드가 해당 노드에 스케줄링됩니다. 즉, 파드가 실행될 노드가 최종적으로 결정됩니다.

관련 플러그인:

  • DefaultBinder: 파드와 선택된 노드를 실제로 연결하여 스케줄링을 완료합니다.

이렇게 파드가 클러스터 내의 적절한 노드에 배포되는 과정은 효율성과 자원 관리 측면에서 중요하며, 스케줄러는 각 단계를 통해 클러스터 자원을 최적화하려고 노력합니다.