1️⃣ 개요
ReplicaSet은 기본적으로 리소스가 충분한 노드에 자동으로 Pod를 배치하지만, 특정 노드에는 특정 애플리케이션만 실행되도록 제어해야 하는 경우가 있습니다.
예를 들어, 고성능 GPU가 장착된 노드에서만 특정 워크로드를 실행하거나, 일반 애플리케이션이 특정 노드에서 실행되지 않도록 차단하고 싶을 때 사용할 수 있습니다.
이러한 배포 전략을 적용하려면 Taints & Tolerations을 활용하면 됩니다.
이번 글에서는 ReplicaSet과 Taints & Tolerations을 활용한 노드 제어 전략을 설명하겠습니다. 🚀
2️⃣ Taints & Tolerations란?
✅ 1. Taints (노드에 적용하는 제한 정책)
• 특정 노드에서 일반적인 Pod가 실행되지 않도록 제한하는 역할
• Taint가 적용된 노드는 해당 조건을 허용하는(Tolerations을 가진) Pod만 배포될 수 있음
📌 Taint 예제: 특정 노드에서 일반 Pod 실행 차단
kubectl taint nodes my-node key=value:NoSchedule
✅ NoSchedule: 이 Taint를 허용하지 않는 Pod는 해당 노드에 배포되지 않음
✅ 2. Tolerations (Pod가 특정 Taint를 허용하도록 설정)
• 특정 Pod가 Taints가 적용된 노드에서도 실행될 수 있도록 허용하는 설정
📌 Tolerations 예제: 특정 Taint를 허용하는 ReplicaSet 설정
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-replicaset
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
tolerations:
- key: "key"
operator: "Equal"
value: "value"
effect: "NoSchedule"
containers:
- name: my-container
image: nginx
✅ 이 설정을 적용하면, key=value:NoSchedule Taint가 설정된 노드에서도 Pod가 실행될 수 있음
3️⃣ Taints & Tolerations을 활용한 운영 전략
✅ 1. 특정 노드에서만 실행되는 워크로드 설정
• GPU 노드에서만 AI/ML 워크로드 실행
• 보안 강화를 위해 특정 애플리케이션을 특정 노드에서만 실행
📌 예제: GPU 노드에서만 실행되는 ReplicaSet
kubectl taint nodes gpu-node gpu=true:NoSchedule
📌 GPU 노드에서 실행되도록 Tolerations 추가
tolerations:
- key: "gpu"
operator: "Equal"
value: "true"
effect: "NoSchedule"
✅ 이 설정을 적용하면 일반 노드에서는 실행되지 않고, GPU가 있는 노드에서만 실행됨
✅ 2. 특정 노드에서 일반 애플리케이션 실행 차단
• 특정 노드는 시스템 관리용으로만 사용하고, 일반 워크로드를 실행하지 않도록 설정 가능
📌 예제: 관리용 노드에서 일반 애플리케이션 실행 차단
kubectl taint nodes master-only management=true:NoSchedule
📌 이 설정을 적용하면 일반 Pod는 management=true가 설정된 노드에 배포되지 않음
✅ 이와 같은 방식으로 특정 노드를 예약하여 운영할 수 있음
4️⃣ Taints & Tolerations 설정 후 효과 검증
📌 Taints가 적용된 노드 목록 확인
kubectl get nodes -o custom-columns="NAME:.metadata.name,TAINTS:.spec.taints"
📌 Pod가 올바른 노드에 배포되었는지 확인
kubectl get pods -o wide
✅ ReplicaSet의 Pod가 예상한 노드에 배포되었는지 반드시 확인해야 합니다.
🔥 5️⃣ 결론
✔ ReplicaSet과 Taints & Tolerations을 활용하면 특정 노드에서 실행할 수 있는 Pod를 제한하거나 허용할 수 있음
✔ GPU 또는 보안이 중요한 노드에서 특정 애플리케이션을 실행하도록 설정할 수 있음
✔ 특정 노드를 관리용으로 예약하고, 일반 애플리케이션이 실행되지 않도록 제어할 수 있음
✔ 운영 환경에서 특정 워크로드를 효율적으로 배포하려면 Taints & Tolerations을 적절히 활용해야 함
'Kubernetes > Kubernetes Advanced' 카테고리의 다른 글
📌 [Deployment 심화편 #1] Deployment의 역할과 실무 활용 방법 (0) | 2025.03.13 |
---|---|
📌 [ReplicaSet 심화편 #9] ReplicaSet과 Node Selector: 특정 노드에 Pod 배포 전략 (0) | 2025.03.12 |
📌 [ReplicaSet 심화편 #7] ReplicaSet과 Anti-Affinity: 특정 노드 간 분산 배포 전략 (0) | 2025.03.12 |
📌 [ReplicaSet 심화편 #6] ReplicaSet과 Cluster Autoscaler: 노드 자동 확장과 리소스 최적화 (0) | 2025.03.12 |
📌 [ReplicaSet 심화편 #5] ReplicaSet과 RollingUpdate 전략을 활용한 배포 관리 (0) | 2025.03.12 |