728x90
노드와 파드 관계 및 배치 제한
- taints와 tolerations 개념을 이해하기 어려울 수 있음.
taints와 tolerations의 개념 이해
- 비유: 사람이 벌레 접근을 막기 위해 방충제를 뿌리는 상황을 상상해보자.
- 방충제 = taint
- 벌레의 반응 = toleration
- 벌레는 냄새에 민감하여 접근하지 못함.
- 일부 벌레는 냄새에 둔감하여 영향을 받지 않음.
- 즉, 벌레가 사람에게 접근할 수 있는지는 방충제와 벌레의 반응에 따라 달라짐.
Kubernetes에서의 taints와 tolerations
- 사람 = 노드, 벌레 = 파드
- taints와 tolerations는 클러스터 보안과는 무관
- 특정 파드를 특정 노드에 배치할 수 있도록 제한하는 데 사용됨.
예시 클러스터 설정
- 세 개의 워커 노드가 있는 간단한 클러스터가 있음: 노드1, 노드2, 노드3.
- 배치할 파드: A, B, C, D
- 현재 제한 사항이 없으므로 스케줄러가 파드를 균등하게 배치함.
특정 노드에 대한 제한 설정
- 특정 애플리케이션을 위한 전용 리소스를 노드1에 설정하고 싶음.
- 노드1에 taint를 설정하여 모든 파드가 배치되지 않도록 함. 예: blue
- 기본적으로 파드는 toleration이 없음.
- 따라서 노드1에 taint blue를 설정하면, 파드가 배치되지 않음.
- 특정 파드가 노드1에 배치되도록 허용하려면,
- 해당 파드에 toleration을 추가해야 함.
- 예: 파드 D에 toleration blue를 추가.
taints와 tolerations 적용 후 스케줄링
- 스케줄러가 파드 A를 노드1에 배치하려 하지만 taint로 인해 노드2로 이동함.
- 파드 B도 마찬가지로 노드3로 이동함.
- 파드 C는 다시 노드2로 이동함.
- 파드 D는 toleration이 있어 노드1에 배치됨.
taints와 tolerations 설정 방법
- kubectl taint nodes 명령어를 사용하여 노드에 taint를 설정함.
- 예: 노드1에 app=blue와 NoSchedule 효과를 설정함.
- 파드 정의 파일의 spec 섹션에 tolerations 섹션을 추가하여 toleration을 설정함.
- 예: app=blue와 NoSchedule 효과를 포함한 toleration을 설정함.
NoExecute taint 효과
- 특정 노드를 전용 애플리케이션으로 설정하고,
- 해당 노드에 NoExecute 효과를 설정함.
- 파드 C는 노드1에서 축출되고, 파드 D는 toleration이 있어 계속 실행됨.
노드 제한과 파드 배치
- taints와 tolerations는 노드가 특정 파드만 수용하도록 제한함.
- 특정 파드를 특정 노드에 배치하려면 node affinity 개념을 사용해야 함.
마스터 노드에 대한 자동 taint 설정
- Kubernetes 클러스터 설정 시, 마스터 노드에 자동으로 taint가 설정되어 파드가 배치되지 않음.
- kubectl describe node 명령어로 마스터 노드의 taint를 확인할 수 있음.
- 일반적으로 애플리케이션 워크로드를 마스터 노드에 배치하지 않는 것이 좋음.
728x90
'자격증 > CKA' 카테고리의 다른 글
[CKA] Udemy 66. Taints and Tolerations vs Node Affinity (0) | 2024.07.13 |
---|---|
[CKA] Udemy 63. Node Affinity (0) | 2024.07.13 |
[CKA] Udemy 56. Labels and Selectors (0) | 2024.07.09 |
[CKA] Udemy 53. Manual Scheduling (0) | 2024.07.05 |
[CKA] Udemy 45. 시험 Tips - Imperative Commands with Kubectl (0) | 2024.07.04 |