Data Plane
데이터 플레인 / Worker Plane
실제 워크로드를 처리하는 컴포넌트 집합. Kubernetes에서 Worker Node를 의미.
데이터 플레인 / Worker Plane
실제 워크로드를 처리하는 컴포넌트 집합. Kubernetes에서 Worker Node를 의미.
Data Plane(데이터 플레인)은 분산 시스템에서 실제 데이터 처리와 워크로드 실행을 담당하는 계층입니다. Control Plane이 "무엇을 어떻게 할지" 결정한다면, Data Plane은 그 결정을 실제로 "실행"합니다. 네트워킹, Kubernetes, 서비스 메시 등 다양한 분야에서 이 개념이 사용됩니다.
Kubernetes에서 Data Plane은 Worker Node(워커 노드)들로 구성됩니다. 각 Worker Node에는 kubelet(노드 에이전트), kube-proxy(네트워크 프록시), Container Runtime(Docker, containerd 등)이 실행되어 실제 Pod와 컨테이너를 관리합니다. Control Plane의 API Server로부터 명령을 받아 컨테이너를 생성, 시작, 중지합니다.
네트워킹에서 Data Plane은 실제 패킷을 전달하는 역할을 합니다. 예를 들어 라우터에서 Control Plane이 라우팅 테이블을 계산하면, Data Plane이 해당 테이블에 따라 패킷을 포워딩합니다. 서비스 메시(Istio, Linkerd)에서는 Envoy 같은 사이드카 프록시가 Data Plane 역할을 수행합니다.
실무에서 Data Plane의 성능과 안정성은 서비스 품질에 직접적인 영향을 미칩니다. 관리형 Kubernetes(EKS, AKS, GKE)를 사용하면 Control Plane은 클라우드 제공자가 관리하고, 사용자는 Data Plane(Worker Node) 관리에만 집중할 수 있습니다.
# Data Plane (Worker Node) 목록 조회
kubectl get nodes
# 노드 상세 정보 확인 (kubelet, 컨테이너 런타임 등)
kubectl describe node worker-node-1
# 각 노드별 리소스 사용량 확인
kubectl top nodes
# Worker Node에서 실행 중인 Pod 확인
kubectl get pods -A -o wide --field-selector spec.nodeName=worker-node-1
# 노드의 allocatable 리소스 확인
kubectl get node worker-node-1 -o jsonpath='{.status.allocatable}' | jq
# Control Plane vs Data Plane 노드 구분
# Control Plane 노드 (master)
kubectl get nodes -l node-role.kubernetes.io/control-plane
# Data Plane 노드 (worker)
kubectl get nodes -l '!node-role.kubernetes.io/control-plane'
# 노드 상태 모니터링
kubectl get nodes -w
"EKS를 쓰면 Control Plane은 AWS가 관리해주니까 우리는 Data Plane, 즉 Worker Node 관리에만 집중하면 됩니다. Node Group 오토스케일링 설정하고 Spot Instance 비율 조정하면 비용 최적화할 수 있어요."
"Control Plane과 Data Plane의 차이를 설명드리면, Control Plane은 클러스터 상태를 관리하는 두뇌이고 Data Plane은 실제 워크로드를 실행하는 몸체입니다. Kubernetes에서 API Server, etcd, Scheduler가 Control Plane이고, kubelet과 kube-proxy가 실행되는 Worker Node가 Data Plane입니다."
"서비스는 정상인데 특정 노드에서만 Pod가 시작 안 되고 있어요. Control Plane 문제가 아니라 Data Plane 문제입니다. 해당 Worker Node의 kubelet 로그 확인하고 디스크 공간이나 컨테이너 런타임 상태 점검해 봅시다."
Worker Node의 allocatable 리소스에서 kubelet, kube-proxy, DaemonSet 등 시스템 컴포넌트 오버헤드를 고려하지 않으면 실제 워크로드에 할당 가능한 리소스가 예상보다 적습니다.
모든 Worker Node를 하나의 가용 영역(AZ)에 배치하면 해당 AZ 장애 시 전체 서비스가 중단됩니다. 멀티 AZ로 Data Plane을 분산하고 Pod Anti-Affinity를 설정하세요.
Data Plane 노드는 목적에 따라 Node Pool/Node Group으로 분리하세요. 범용, GPU, 고메모리 등 워크로드 특성에 맞는 인스턴스 타입을 선택하고, Cluster Autoscaler로 자동 확장을 설정합니다.