카테고리 없음
[k8s] 쿠버네티스 파드의 노드배치(Node Affinity, Taint, Toleration)
daniel_lab
2024. 1. 3. 19:58
쿠버네티스는 pod 를 node에 배치할때 3가지 필터 절차를 갖는다
1. 볼륨 필터: pod에 필요한 디스크 볼륨이 노드에서 지원되는지 확인(마운트 충돌)
2. 리소스 필터: 충분한 리소스 있는지 확인
3. 토폴로지 필터: affinity, taint, toerance 등 확인
이중 affinity, taint, tolerance 에 대하여 간략하게 정리한다.
node affinity
pod 에서 특정 노드에 배치되도록 지정하는 정책. matchExpression을 통하여 라벨 조건을 지정해 노드를 지정할 수 있다. 스케줄링중에 적용되는 것이므로 이미 배치된 후에는 조건이 변경되었다해서 축출되거나 하지는 않는다.
아래 2가지 옵션을 각각 작성가능하다
requiredDuringSchedulingIgnoredDuringExecution: 강제
preferredDuringSchedulingIgnoredDuringExecution: 반 강제. 선호.
apiVersion: v1
kind: Pod
metadata:
name: k8s-node-affinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: k8s/zone
operator: In
values:
- us-central1-a
Taint, Toleration
Taint는 노드에 지정하여, Taint에 맞는 Toleration을 갖는 pod만 배치될 수 있도록 한다.
Toleration 적용: taint key중 abc가 valueabc 이어야 하며, effect 는 NoSchedule 이라면 배치가능
tolerations:
- key: "abc"
operator: "Equal"
value: "valueabc"
effect: "NoSchedule"
Taint 적용
출처
쿠버네티스 파드 스케줄링 (Affinity, Taint & Toleration)
https://skasha.tistory.com/92