안녕하세요, 쯀리입니다.
저번시간엔 Label과 Selector에 대해 알아보았습니다.
오늘은 클러스터의 노드와 Pod 간의 스케줄링 제약 조건을 설정하여 특정 노드에 특정 Pod가 스케줄링되지 않도록 하거나, 반대로 특정 Pod만 스케줄링되도록 하는 기능인 Taints와 Toleration에 대한 부분들을 알아볼게요.
Taints 와 Tolerations 의미
Taints
Taints는 노드에 설정되어, 특정 조건을 만족하지 않는 Pod가 해당 노드에 스케줄링되지 않도록 합니다. Taints는 노드를 “오염”시키는 역할을 합니다. 각 taint는 키, 값, 그리고 효과(Effect)로 구성됩니다.
Tolerations
Tolerations는 Pod에 설정되어, 특정 taint를 무시하고 해당 노드에 스케줄링될 수 있도록 합니다. Tolerations는 taints를 무시할 수 있게 허용합니다.
문제
1. How many nodes exist on the system? 2개
kubectl get nodes
2. Do any taints exist on node01 node?
kubectl describe node node01
4. Create a taint on node01 with key of spray, value of mortein and effect of NoSchedule
kubectl taint node node01 spray=mortein:NoSchedule
5. Create a new pod with the nginx image and pod name as mosquito.
kubectl run mosquito --image=nginx
6. What is the state of the POD?
7. Why do you think the pod is in a pending state?
Mosquito POD가 Taint를 tolerate할 수없기때문입니다. : POD Mosquito cannot tolerate taint
8. Create another pod named bee with the nginx image, which has a toleration set to the taint mortein.
yaml생성:
apiVersion: v1
kind: Pod
metadata:
name: bee
spec:
containers:
- name: nginx
image: nginx
tolerations:
- key: "spray"
value: "mortein"
effect: "NoSchedule"
9. Notice the bee pod was scheduled on node node01 despite the taint.
10. Do you see any taints on controlplane node?
바로 보이네요! Yes:NoSchedule
11. Remove the taint on controlplane, which currently has the taint effect of NoSchedule.
Untaint하는 방법:
kubectl taint nodes controlplane node-role.kubernetes.io/control-plane:NoSchedule-
명령어 뒤에 -를 붙여주면 바로 해제됩니다.
12. What is the state of the pod mosquito now? Running
13. Which node is the POD mosquito on now?
현재 변경된 NODE는 Controleplane이네요
아까는 node01에 배포했었지만 taint에 걸려있어 그부분을 삭제했더니 자동으로 Controlplane에 배포되었네요.
오늘은 Taint와 Toleration에 대해 배워봤는데 아직 감이 안잡히죠?
다음시간에는 특정 Label을 가진 노드에만 Pod를 배치하거나 특정 노드에 배치하지 않도록 하는 등의 세밀한 스케줄링 정책을 구현할 수 있게 하는 Node Affinity부분을 살펴볼게요.
참조
※ Udemy Labs - Certified Kubernetes Administrator with Practice Tests
'IT 잡지식 > DevOps' 카테고리의 다른 글
[CKA] KodeKloud -Resource Limits (0) | 2024.06.09 |
---|---|
[CKA] KodeKloud -Node Affinity (0) | 2024.06.08 |
[CKA] KodeKloud - Labels and Selectors (0) | 2024.06.03 |
[CKA] KodeKloud - Manual Scheduling (0) | 2024.06.03 |
[CKA] KodeKloud - CoreConcept Deployments와 Namespaces (0) | 2024.05.27 |