Kubernetes에서 Master Node(Control Plane)는 클러스터의 중심 역할을 수행합니다. 통상적으로 이 노드에는 일반 워크로드(Pod)를 배치하지 않지만, 특별한 설정이 없다면 스케줄될 수 있습니다. 이 포스트에서는 Master Node에서 일반 Pod가 실행되지 않도록 설정하는 방법을 안내합니다.

🧱 핵심 개념: Taint
Kubernetes는 특정 노드에 "Taint"(오염값)를 부여해, 조건을 만족하지 않는 Pod가 해당 노드에 스케줄되지 않도록 합니다.
Master Node는 아래와 같은 Taint가 기본적으로 설정되어 있습니다:
kubectl describe node <마스터노드이름>
예시:
Taints: node-role.kubernetes.io/control-plane:NoSchedule
이 설정이 적용되어 있으면, toleration이 없는 일반 Pod는 해당 노드에 올라갈 수 없습니다.
🛠 Taint가 없다면 수동 추가
만약 위 Taint가 빠져 있다면, 아래 명령어로 수동으로 추가할 수 있습니다:
kubectl taint nodes <마스터노드이름> node-role.kubernetes.io/control-plane=:NoSchedule
이전 버전에서는 아래 명령어도 사용됩니다:
kubectl taint nodes <마스터노드이름> node-role.kubernetes.io/master=:NoSchedule
📌 NoSchedule은 해당 조건을 만족하지 않는 Pod는 절대 이 노드에 배치되지 않도록 제한합니다.
⚙️ kubelet 설정 시 Taint 자동 등록
kubeadm 등을 통해 클러스터를 구성하거나, kubelet을 개별 설정할 때 다음 파라미터를 사용하면 taint를 자동 부여할 수 있습니다:
--register-with-taints=node-role.kubernetes.io/control-plane=:NoSchedule
이 설정은 Master 노드 등록 시 자동으로 taint가 설정되도록 도와줍니다.
🔍 현재 Taint 확인하기
현재 노드들의 Taint 상태를 확인하려면:
kubectl get nodes -o json | jq '.items[].spec.taints'
또는 간단히 전체 노드에서 Taint만 확인할 수도 있습니다:
kubectl describe nodes | grep Taints
✅ 정리
이제 Master Node에는 일반 Pod가 배치되지 않도록 안전하게 차단되었습니다. 추가적으로 필요에 따라 Toleration이나 Node Affinity를 활용해 조건부 허용도 가능합니다.
☁️ 클러스터 안정성과 보안을 위해, Control Plane 노드는 전용 관리용도로만 사용하는 것이 바람직합니다.
'DevOps > Kubernetes' 카테고리의 다른 글
Helm을 활용한 Kafka 클러스터 설치 자동화 (0) | 2025.04.14 |
---|---|
Kubernetes CNI 비교: Calico vs Flannel - 당신의 클러스터에 더 적합한 선택은? (0) | 2025.04.06 |
Kubernetes 환경에서 InfluxDB를 자동화된 방식으로 배포하기 (0) | 2025.04.05 |
Ubuntu 환경에서 Kubernetes 설치 및 클러스터 구성 가이드 (0) | 2025.04.04 |