Kubernetes/Udemy - CKAD with Tests

Node Affinity

비번변경 2021. 7. 21. 22:31

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 : 해당 변경 사항 무시