Pod Scheduling

OneDayDev·2023년 1월 29일
0

K8s

목록 보기
8/12

Node Selectors

이전 블로그 참고

Affinity

Node Affinity

  • Selector와 비슷하게 노드의 레이블 기반으로 파드를 스케줄링한다.
  • Selector와 다르게 Affinity는 2가지의 하위 필드 설정을 통해 더 다양한 기능을 제공한다.
  • 가중치를 이용할 수 있다.
  • 예시를 통해 쉽게 이해할 수 있을 것이다.

Pod affinity/anti-affinity

  • 파드 어피니티와 안티-어피니티를 사용하여, 노드 레이블 대신, 각 노드에 이미 실행 중인 다른 파드 의 레이블을 기반으로 파드가 스케줄링될 노드를 제한할 수 있다.

Taints and Tolerations

  • 노드에 Taints를 설정하면 파드는 Toleration을 설정하지 않는 한 스케줄링되지 않는다.
  • 이 두 설정을 통해 노드를 특정 역할만 하도록 만들 수 있다.

설정 방법 예시

kubectl taint nodes node1 key1=value1:NoSchedule

제거하기 위해서는 kubectl taint nodes node1 key1=value1:NoSchedule-같이 -를 덧붙인다.
.effect 필드 값은 NoSchedule, PreferNoSchedule, NoExecute로 설정할 수 있다.

Cordon and Drain

Taint와 유사하게 cordon과 drain 명령어가 있다.
kubectl cordon node-name명령을 통해 해당 노드를 SchedulingDisabled 상태로 바꿀 수 있다.
kubectl drain은 지정된 노드에 있는 파드들을 다른 노드로 이동시키는 명령이다.
(예시: kubectl drain node-name)
DaemonSet, ReplicaSet, Replication, StatefulSet, Job으로 실행된 파드가 있을 때는
--ignore-daemonsets=true --force 옵션을 설정해 다시 실행하면 정상적으로 드레인 설정이 실행된다.

profile
안녕하세요.

0개의 댓글