-
Kubernetes] AffinityIT/Education 2021. 8. 6. 18:18반응형
스스로 DevOps 엔지니어라고 말하면서 관련 글을 아무것도 올리지 않는것을 보면,
나도 아직 한참 먼 것 같다. 그래서 다시 개인 공부 및 정리 차원에서 글을 작성해보려 한다.
우선 기본적인 개념은 공식 사이트나 다른 많은 사이트들에서 찾아볼수 있으므로 나는 내가 정리하고자 하는 내용만
정리해본다.
ref) Kubernetes 공식 홈페이지 : https://kubernetes.io/ko/
원래는 쿠버네티스를 이용하면서 우리는 Pod를 어디에 띄울지, 크게 고민하지 않는다는 이점을 이용하였다.
하지만, 어떤 application이 동작함에 있어서, 원하는 node에서 하나만 뜨고 싶고, 어떤 pod와 같이 뜨고 싶은
경우가 생길 수 있다. 그중 내가 사용했었던 조건에 대한 정리이다.
1. Affinity ( PodAffinity )
Affinity는 선호도라고 생각하는 것이 좋다.
- 어떤 Node에 label A를 포함하고 있고, Pod가 뜰 때, label A를 가진 node에서 동작하길 희망한다고 선언하면,
label A 를 가진 node에 할당할 수 있으면 거의 할당해준다고 보면 된다.
또한 Affinity의 내부 변수중 required, preferred로 할당을 제어할 수 도 있다. 아래는 예시의 yaml 파일이다.
apiVersion: v1 kind: Pod metadata: name: with-pod-affinity spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: security operator: In values: - S1 topologyKey: topology.kubernetes.io/zone podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: security operator: In values: - S2 topologyKey: topology.kubernetes.io/zone containers: - name: with-pod-affinity image: k8s.gcr.io/pause:2.0
Affinity 종류로는 총 4가지가 있다.
Affinity Antiaffinity Node nodeAffinity nodeAntiaffinity Pod podAffinity podAntiaffinty 본인이 사용했던 것은 podAffinity로 노드에는 상관하지않고, 특정 label을 가진 pod가 있는 ( 조건을 만족한 pod )
node에 새로운 pod를 할당하는 정책이 필요해서 위의 내용을 찾아보고 정리하였다.
해당 Affinity 조건만으로는 내가 원하는 스케쥴링을 만족시키진 못해서 조건 하나를 더 추가하였다.
이후 추가 포스팅할 내용으로 topologySpreadConstraint 라는 내용을 정리할 것이다.
반응형'IT > Education' 카테고리의 다른 글
BFS] 미로 탈출 ( feat. 이코테 2021 강의 몰아보기 문제 ) (0) 2021.08.07 DFS] 음료수 얼려먹기 (feat. 이코테 2021 강의 몰아보기 문제 ) (0) 2021.08.07 git ] 헷갈리는 git 명령어 (1)- merge, rebase (0) 2021.04.12