Node Affinity
Pod에 특정 노트에서 호스팅하도록 한다.
Node Selector가 제공하지 못하는 OR, Not 등의 고급 기능을 제공한다.
Node Selector와 마찬가지로 node에 레이블이 설정되어 있어야 한다.
설정 방법
포드 정의 파일에 affinity 속성을 추가한다.
apiVersion: v1
Kind: Pod
metadata: myapp-pod
spec:
containers:
- name: data-processor
image: data-processor
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExcution:
nodeSelectorTerms:
- matchExpressions:
- key: size
operator: In # values에 해당하는 레이블인 포드에 배치
values:
- Large
- Medium
항목 상세
- operator : 노드의 레이블과 비교 시 사용하는 연산자
연산자 동작 방식 In values 내 값에 해당하는 노드에 Pod 배치 NotIn values 내 값에 해당하는 노드에 Pod 배치 안 함 Exists key에 해당하는 레이블을 가진 노드에 Pod 배치. 값 비교하지 않음 - nodeAffinity : node affinity type 정의. 특정 포드 수명 주기 단계에서 node affnity 적용에 대한 스케쥴러 동작 정의
DuringScheduling 포드가 처음 생성된 상태. node affinity 적용되기 이전
동작 규칙
- required : 지정된 레이블을 찾지 못하면 포드가 예약되지 않음. 포드 배치 규칙이 중요한 경우 사용한다.
- preferred : 지정된 레이블을 찾지 못하면, 스케쥴러는 node affinity를 무시하고 사용 가능한 노드에 배치한다. 워크로드 실행 자체가 중요할 때 사용한다.DuringExecution 포드 실행 중에 노드 레이블 변경과 같은 node affinity에 영향을 주는 변경 사항이 있는 경우
동작 규칙
- Ignored : 해당 변경 사항 무시