Section 3-3. Node Selectors, Node Affinity
udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 및 쿠버네티스 인 액션 (마르코 룩샤)를 참고하여 정리한 글입니다.
Section03. Scheduling
Node Selectors
- 특정 노드에서만 작동하도록 파드의 한계를 설정하는 두 가지 방법이 있다.
nodeSelector는 파드를 특정 라벨이 있는 노드로 제한하는 간단한 방법을 제공한다.
1 2 3 4 5 6 7 8 9 10
apiVersion: v1 kind: Pod metadata: name: myapp-pod spec: containers: - name: data-processor image: data-processor nodeSelector: size: Large
- nodeSelector라는 속성을 파드의 spec에 정의하고 노드에 할당된 Label을 명시한다.
- 이 yaml 파일을 통해 파드를 배포할 경우 node의 label이 size: Large인 곳에 파드가 생성된다.
- Node Selector는 하나의 label과 selector을 통해 동작하기 때문에 복잡한 요구사항을 들어줄 수 없다는 한계가 있다.
Node Affinity
- 노드 라벨을 기반으로 파드를 스케줄할 수 있는 노드를 제한할 수 있다.
Node Affinity Types
- Available
- requiredDuringSchedulingIgnoredDuringExecution
- 파드가 노드에 스케줄되려면 반드시 규칙을 만족해야함 (엄격)
- DuringExecution: ignored(무시), 파드는 계속해서 실행되고 nodeAffinity의 변화는 영향을 미치지 않는다.
- preferredDuringSchedulingIgnoredDuringExecution
- 스케줄러가 시도하려고 하지만 선호를 지정. (유연)
- DuringExecution: ignored(무시), 파드는 계속해서 실행되고 nodeAffinity의 변화는 영향을 미치지 않는다.
- requiredDuringSchedulingIgnoredDuringExecution
- Planned
- requiredDuringSchedulingRequiredDuringExcution
- 파드가 노드에 스케줄되려면 반드시 규칙을 만족해야함 (엄격)
- DuringExecution: required(필수), nodeAffinity 규칙이 변경되면 이에 부합하지 않는 노드에서 실행 중인 파드를 퇴출하거나 종료한다.
- requiredDuringSchedulingRequiredDuringExcution
Node Affinity 예시
이 노드 어피니티의 규칙은 키가 size 이고 값이 Large 또는 Medium 인 Label이 있는 노드에만 파드를 배치할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
apiVersion: v1 kind: Pod metadata: name: myapp-pod spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: size operator: In values: - Large - Medium containers: - name: data-processor image: data-processor
혹은 키가 size이고 값이 Small이 아닌 Label이 있는 노드에 파드를 배치할 수도 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13
...생략 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: size operator: NotIn values: - Small ...생략
혹은 key=size Label이 있는 노드에 파드를 배치할 수도 있다.
1 2 3 4 5 6 7 8 9 10 11
...생략 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: size operator: Exists ...생략
This post is licensed under CC BY 4.0 by the author.