자격증/CKA

[CKA] Udemy 63. Node Affinity

14ben 2024. 7. 13. 15:46
728x90

Kubernetes의 Node Affinity 기능

주된 목적은 특정 파드가 특정 노드에서 호스팅되도록 보장하는 것

이 경우, 대규모 데이터 처리 파드가 Node 1에 배치되도록 보장해야 함.


Node Selector와 Node Affinity의 차이점

  • 이전 강의에서 Node Selector를 사용하여 쉽게 이를 구현했었음.
  • 그러나 Node Selector는 OR나 NOT과 같은 고급 표현식을 제공하지 못함.
  • Node Affinity는 고급 기능을 제공하여 특정 노드에 파드를 배치할 수 있도록 함.
  • 이는 더 큰 복잡성을 수반하지만, 단순 Node Selector와 동일한 작업을 수행할 수 있음.

 

Node Affinity의 구조

  • spec 아래에 affinity가 있고, 그 아래에 nodeAffinity가 있음.
  • requiredDuringSchedulingIgnoredDuringExecution이라는 긴 속성이 있음. 이는 설명이 필요하지 않음.
  • nodeSelectorTerms 아래에 키와 값 쌍을 지정하는 NRA가 있음.
  • 키, 연산자, 값의 형식으로 지정됨. 여기서 연산자는 in임.
  • 파드가 size 레이블이 특정 값 목록에 포함된 노드에 배치되도록 보장함.
  • 예를 들어, large 값 하나를 지정할 수 있음.
  • 파드가 large 또는 medium 노드에 배치될 수 있도록 하려면 값 목록에 추가할 수 있음.


exists 연산자

  • size가 small이 아닌 노드에 파드를 배치할 수 있음.
  • exists 연산자는 노드에 size 레이블이 존재하는지 여부만 확인함. 값 섹션이 필요하지 않음.

 

Node Affinity 규칙

Node Affinity 규칙을 이해하고 특정 규칙을 가진 파드를 생성하는 방법을 숙지해야 함.

파드가 생성될 때 이러한 규칙이 고려되며 적절한 노드에 배치됨.

 

Node Affinity가 매칭되지 않을 경우

  • 매칭되는 노드가 없는 경우 어떻게 되는지 설명함.
  • 예를 들어, size 레이블이 없는 경우, 타입에 따라 행동이 달라짐.

 

Node Affinity의 타입

  • requiredDuringSchedulingIgnoredDuringExecution
    • 파드가 특정 조건을 충족하는 노드에만 배치됨.
    • 매칭되는 노드가 없으면 파드가 스케줄되지 않음.
  • preferredDuringSchedulingIgnoredDuringExecution
    • 매칭되는 노드가 없는 경우, 노드 어피니티 규칙을 무시하고 파드를 임의의 노드에 배치함.

 

파드 실행 중 라벨 변경 시

  • 실행 중인 상태에서 노드 라벨이 변경되면 파드에 미치는 영향에 대해 설명
  • 현재 사용 가능한 Node Affinity 타입은 ignored during execution 값을 가짐.
  • 이는 파드가 계속 실행되며, 노드 어피니티 변경이 파드에 영향을 미치지 않음을 의미함.

 

미래의 Node Affinity 타입

  • requiredDuringSchedulingRequiredDuringExecution이라는 새로운 옵션이 도입될 예정임.
  • 이는 실행 중에 노드 어피니티 규칙을 충족하지 않는 노드에서 파드를 퇴출하거나 종료함.

 

요약

Node Affinity는 특정 파드를 특정 노드에 배치하기 위해 고급 규칙을 제공

현재 두 가지 타입이 있으며, 노드 어피니티 규칙을 설정하는 방법과

노드 라벨 변경 시의 동작을 이해함.

 

(솔직히 뭔 말인지 아직 다 이해 안됨..)

728x90