Pod Scheduling

작성자 김아름 수정일 2022-12-13 11:35

#kubernetes, #쿠버네티스, #pod, #scheduling, #파드

들어가며

  • Kubernetes는 Pod를 스케줄링할 때, 원하는 조건에 맞춰 실행할 수 있는 커스터마이징 기능을 제공합니다.

  • 이는 pod scheduling 이라고 하며 종류는 아래와 같습니다.
  • Node Selector
  • Affinity & AntiAffinity
  • Taint & Toleration
  • Cordon & Drain
  • 위의 4가지 종류 중, Affinity와 AntiAffinity에 대해 알아봅니다.



Affinity & antiAffinity

해당 옵션은 pod와 node에 모두 적용할 수 있습니다.

node affinity
특정 node에만 pod가 실행되도록 유도
pod affinity특정 pod가 동작 중인 node에 실행되도록 유도
pod anti affinity특정 pod가 동작하지 않은 node에 실행되도록 유도


affinity와 anti affinity의 scheduling에는 두 가지의 filed가 있습니다.

requiredDuringSchedulingIgnoredDuringExecution
엄격한 요구스케줄링 하는 동안 꼭 필요한 조건
preferredDuringSchedulingIgnoredDuringExecution
선호도 요구스케줄링 하는 동안 만족하면 좋은 조건


node affinity를 적용한 pod는 어떻게 스케줄링되는지 예시를 통해 알아보겠습니다.

kubectl get node -L gpu,disktype
NAME     STATUS   ROLES    AGE   VERSION    GPU   DISKTYPE
master    Ready    master   55d   v1.18.19         
worker1   Ready    <none>   55d   v1.18.19          ssd 
worker2   Ready    <none>   55d   v1.18.19   true   ssd
worker3   Ready    <none>   55d   v1.18.19   true


affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - {key: disktype, operator: Exists}
    preferredDuringSchedulingIgnoredDuringExecution:
    - weight: 10
      preference:
        matchExpressions:
        - {key: gpu, operator: In, values: ["true"]}
        - {key: disktype, operator: In, values: ["ssd"]}


위 yaml파일의 내용을 해석

disktype이라는 key값이 있는 node에서만 실행을 합니다.

gpu가 true인 node에 가중치 10점, disktype이 ssd인 node에 가중치 10을 부여합니다.


따라서 해당 pod는 가중치 20점을 가진 worker2번에 스케줄링이 됩니다.




마무리

  • pod를 스케줄링할 수 있는 방법 중 Affinity와 AntiAffinity에 대해 알아보았습니다.

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300