들어가며
- 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에 대해 알아보았습니다.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.