Kubernetes는 Pod Spec의 Node Selector
를 통해 특정 Node
로 Schedule 수행 가능하며 Taint
와 Tolerate
를 통해 특정 노드에 스케줄링 할 수 있습니다.
kubectdl label nodes worker computetype=gpu
apiVersion: apps/v1
kind: Deployment
...
spec:
replicas: 1
selector:
...
spec:
containers:
- name: inference
...
nodeSelector:
computetype=gpu
Toleration
Taint
를 무시할 수 있습니다.
tolerations:
- key: "computetype"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"
Taint
Taint
를 설정한 노드에는 Pod들을 스케줄링 하지 않습니다.
Taint에는 key, value, effect가 있고 =: 표시
kubectl taint node {nodename} {key}={value}:{effect}
Taint effect
Schedule 동작 방식 설정
NoSchedule
: Taint를 Tolerate 허용하지 않을 경우 Pod가 스케줄링 되지 않습니다.PreferNoSchedule
: Schedule을 피하지만, 다른 곳에 불가한 경우 해당 Node에서 스케줄링합니다.NoExecute
: Scheduling 이 Node 뿐만 아니라 실행 중인 Pod도 제거됩니다.
Master 노드의 Taint를 살펴보겠습니다.
kubectl describe node master | grep Taints
---
Taints: node-role.kubernetes.io/control-plane:NoSchedule
Master 노드의 Taint 해제합니다.
kubectl taint nodes master node-role.kubernetes.io=control-plane:NoSchedule-
Master 노드의 Taint 재설정합니다.
kubectl taint nodes master node-role.kubernetes.io=control-plane:NoSchedule
Reference
'Kubernetes' 카테고리의 다른 글
ArgoCD Kubernetes 구축 (0) | 2024.07.18 |
---|---|
Kubernetes NFS StorageClass with MySQL (0) | 2024.07.10 |
Kubespray를 활용한 Kubernetes 클러스터 구축 (0) | 2023.05.31 |
Keycloak 개념 Container 실행 및 Minio 연동 (0) | 2023.05.27 |
VMWare를 활용한 Ubuntu 22.04 server 기반 Kubernetes 클러스터 구축 (1) | 2023.01.11 |