반응형
1. 개념
- 파드를 kube-Scheduler에 의존하지 않고 엔지니어 의도에 따라 특정 노드에 배포할 수 있도록 핸들링하는 설정
- 배포조건/오퍼레이터/weight를 활용해 배포 스케줄링을 세부적으로 핸들링 할 수 있는 점이 nodeSelctor와의 차이점
2. 노드 어피니티 조건
- 배포조건
- requiredDuringScheduling : 반드시 노드 어피니티 조건에 부합하는 노드에 배포하겠다는 의미
- preferredDuringScheduling : 왠만하면 노드 어피니티 조건에 부합하는 노드에 파드를 배포하겠지만, 상황에 따라 조건에 맞지 않는 노드에 배포할 수도 있다는 의미
- IgnoredDuringExecution : 파드가 배포되어 특정 노드에서 실행 중인 상황에서 해당 노드의 설정이 변경되어 어피니티 조건에 부합하지 않더라도 기존에 실행 중인 파드는 삭제하지 않고 유지하겠다는 의미
- RequiredDuringExecution : 파드가 배포되어 특정 노드에서 실행 중인 상황에서 해당 노드의 설정이 변경되어 어피니티 조건에 부합하지 않을 경우 기존에 실행 중이던 파드를 축출해 다른 노드에 배포하겠다는 의미(현재는 지원하지 않는 조건으로 추후 지원 예정)
- 오퍼레이터
- In / NotIn : 키 값을 체크
- Exists / DoesNotExists : 키의 존재 여부 체크
- Gt / Lt : 키 값의 크고 작음을 체크
- weight
- preferredDuringScheduling 조건인 경우에만 사용하는 옵션
- 노드 어피니티 조건마다 weight(1 ~ 100 까지)를 부여해, weight의 총 합이 가장 높은 노드에 배포
3. 노드 어피니티 적용
- 노드 레이블 상황
3.1. requiredDuringScheduling 적용
- price > 100인 노드에 배포
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: price
operator: Gt
values:
- "100"
- w1-k8s 노드에 배포된것을 확인
3.2. preferredDuringScheduling 적용
- price=100 이고 disktype=ssd인 노드에 배포
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 10
preference:
matchExpressions:
- key: disktype
operator: In
values:
- ssd
- weight: 30
preference:
matchExpressions:
- key: price
operator: In
values:
- "100"
- w2-k8s 노드에 배포된것을 확인(w3-k8s 노드는 weight 총 합이 30이고 w2-k8s는 40이기 때문에 w2-k8s 노드에 배포)
반응형
'Kubernetes' 카테고리의 다른 글
Kubernetes 데몬셋(DaemonSet) 개념과 명령어 (0) | 2023.03.16 |
---|---|
Kubernetes 테인트(Taints)/톨러레이션(Tolerations)과 노드 어피니티(Node Affinity) 복합 활용 (0) | 2023.03.16 |
Kubernetes 테인트(Taints)와 톨러레이션(Tolerations) 개념과 설정 (0) | 2023.03.16 |
Kubernetes 레이블(label)과 셀렉터(selector) 개념 (0) | 2023.03.16 |
Kubernetes 메뉴얼 스케줄링(Manual Scheduling)과 노드 셀렉터(Node Selector) 개념과 설정 (0) | 2023.03.16 |