kubernetes는 Worker node위에 Pod들이 배포될때 다양한 스케쥴링 기법 제공
pod 생성시 pod를 적정 node에 배치하는 것이 스케쥴링, pod를 어디 node에 배치할지에 대한 고려가 필요.
Kubernetes환경에서 작업시 특정 node에 pod가 쏠리는 현상 발생
이를 방지하기 위해 nodeSelector / affinity 설정 추가로 해결 가능
kubernetes 스케쥴링 기법 3가지
taint(얼룩?)가 설정된 node에는 일반적으로 pod는 배포될수 없고, taint가 지정된 노드에는 toleration(관용)을 적용하면 배포 가능.
taint가 설정된 node는 동일한 값의 toleration이 적용된 pod가 배포되도록 허용
taint는 Node에 key=value:effect 형태로 할당. toleration은 pod에 할당
taint&toleration이 적용되어 있어도 특정 조건에 의해 pod는 다른 node에 배포 가능함.
nodeSelector로 key/value label을 설정하고 해당 label에 맞추어 pod를 node에 배포 가능.
Pod를 특정 Node에 배포되도록 하는 정책
pod가 특정 pod로 배포되도록 하는 기능.
hard affinity : pod가 조건이 딱 맞는 node에만 배포 되도록 하는 기능(=node selector)
soft affinity : pod가 조건에 맞는 node에 배포 되도록(반드시x)
기존에 배포된 pod 기준으로 배포될 Pod rufwud.
DB의 master/slave pod가 다른 node에 배포되도록 하기 위해서 master pod가 배포된 nod를 피해서 배포하거나, 클러스터 시스템에서 클러스터를 이루는 각각의 pod가 다른 node에 배포되도록 사용 가능.
Reference
NodeSelector 공식문서