(2) Assign pod to nodes using Node Affinity
(2) Assign pod to nodes using Node Affinity
Affinity란?
- affinity란 선호도란 의미. Pod는 항상 nodㄷ에 띄워져야 하는데, 이러한 배치를 함에 있어 선호하는 Node나 Pod에 설정할 수 있게끔 설정
Affinity 종류
- nodeAffinity란 어떤 Node를 선호할것인가에대한 리소스. 즉 Pod를 배치할 떄 어떤 node에 스케쥴링 할지 설정
- podAffinity는 pod가 배치될때, 실행중인 Pod들에 선호하는 pod를 찾아 해당 pod와 동일한 Node로 배치하는걸 선정
- podAntiAffinity는 실행 중인 Pod들 중에, 선호하지 않은 pod가 실행중인 node에 피해서 배치를 하겠다
Node Affinity
- 선호하는 Node를 설정하는 방법으로,
nodeSelector
보다 확장된label selector
기능을 지원 matchExpressions
사용 가능(In,NotIn,Exists,DoesNotExists,Gt,Lt)- 2가지 옵션이
hard
,soft
가 존재- 반드시 충족 해야 하는 조건(Hard)
requiredDuringSchedulingIgnoredDuringExecution
: 즉 스케쥴링 되는 워크로드에는필수
조건이고 실행 중인 워크로드는 조건을 무시
- 선호하는 조건(soft) -
preferredDuringSchedulingIgnoredDuringExecution
: 즉 스케쥴링 되는 워크로드에는선호
조건이고, 실행 중인 워크로드는 조건을 무시
- 반드시 충족 해야 하는 조건(Hard)
- 용어
- required.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
apiVersion: apps/v1 kind: Deployment metadata: name: node-affinity-required spec: replicas: 3 selector: matchLabels: app: hello template: metadata: name: hello labels: app: hello spec: containers: - name: nginx image: nginxdemos/hello:plain-text ports: - name: http containerPort: 80 protocol: TCP affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: team operator: In values: - blue - red
- 스케쥴링 될때는 필수적으로 적용될 조건이지만 실행 중인 노드에는 무시
- operato in은 or연산자라고 이해. key가 team이고 value가 blue,red인 조건을 필수
podAffinity
- 선호하는 pod를 설정하는 방법으로 사용법은 nodeAffinity와 동일
- 2가지 옵션 제공 (hard,soft) nodeAffinity와 동일
- Topology key
https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity
- https://kubernetes.io/ko/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/
- https://velog.io/@pinion7/Kubernetes-%EB%A6%AC%EC%86%8C%EC%8A%A4-Affinity%EC%97%90-%EB%8C%80%ED%95%B4-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B3%A0-%EC%8B%A4%EC%8A%B5%ED%95%B4%EB%B3%B4%EA%B8%B0
- https://velog.io/@pinion7/Kubernetes-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%A5%BC-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B3%A0-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EA%B5%AC%EC%84%B1%EC%9A%94%EC%86%8C%EB%A5%BC-%ED%8C%8C%EC%95%85%ED%95%B4%EB%B3%B4%EA%B8%B0
This post is licensed under CC BY 4.0 by the author.