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
'자격증 > CKA' 카테고리의 다른 글
[CKA] Udemy 71. Daemon Sets (0) | 2024.07.13 |
---|---|
[CKA] Udemy 66. Taints and Tolerations vs Node Affinity (0) | 2024.07.13 |
[CKA] Udemy 59. Taints and Tolerations (0) | 2024.07.10 |
[CKA] Udemy 56. Labels and Selectors (0) | 2024.07.09 |
[CKA] Udemy 53. Manual Scheduling (0) | 2024.07.05 |