[kubernetes] 원하는 노드에 스케쥴링 하는 좀 더 고급진 방법 (affinity)

vinca·2023년 12월 11일
0

☸️ kubernetes

목록 보기
21/35
post-thumbnail

본 글을 보기 전에 이전 노드를 스케쥴링 하는 방법인 nodeName, label, nodeSelector 글을 보고 오면 이해하기가 훨씬 쉽습니다.

affinity

친밀함을 뜻하는 어피티니에 대해서 알아보자.

먼저 핵심부터 말하자면 affinity를 통해서 우리는 어떤 노드에 파드를 배포할지를 친밀도를 기준으로 결정할 수 있다.

배포 조건과 연산자

먼저 배포 조건과 연산자는 다음과 같이 사용한다.

단,requiredDuringSchedulingIgnoredDuringExecution을 2번 이상 사용 시, OR 조건으로 둘 다 허용되어 들어간다.

실습

바로 실습을 적용해보며 이를 알아보자.

affinity 실습

requiredDuringSchedulingIgnoredDuringExecution을 사용해서 반드시 만족해야하는 레이블 조건preferredDuringSchedulingIgnoredDuringExecution을 통해서 선호하는 조건을 하나 더 추가하였다.

이러한 선호 조건에서 weight1로 지정하고 In을 통해서 keyvalue가 반드시 매치되도록 사용하였다.

❗주의할 점은 preferredDuringSchedulingIgnoredDuringExecution어디까지나 ❣선호 조건일 뿐이다. 배포를 보장하는 것이 아니다.

따라서 weight가 100이라도, 쿠버네티스 스케줄러는 다른 요구 사항(예: 리소스 요구 사항, 테인트 및 톨러레이션 등)에 의해서 배포될 노드가 변경될 수 있다.

현재 weight가 100인 상황에서도 워커노드 2번에 한개가 배포된 것을 확인할 수 있다.

  • 결과

anti-affinity 실습

그냥 In 대신 NotIn을 사용한 것이 anti-affinity이다.
반대로 말 그대로 안티이므로, 해당 조건을 만족하는 노드를 비 선호하게 된다.

  • 결과
profile
붉은 배 오색 딱다구리 개발자 🦃Cloud & DevOps

0개의 댓글