liveBook · Manning

Control plane node

As explained in Acing the Certified Kubernetes Administrator Exam, Second Edition

The control plane is the set of Kubernetes components that manage cluster state and coordinate cluster operations.

A control plane node runs the components that manage a Kubernetes cluster. Worker nodes run application containers and report their status through the kubelet; communication with the control plane goes through the Kubernetes API. Both kinds of node run pods, but their responsibilities differ. section 1.4.1 section 2.1.2

Know the four core components before inspecting or troubleshooting a control plane node:

  • kube-apiserver exposes the API and serves as the communication hub for cluster components. section 2.1.2
  • kube-controller-manager runs controllers that reconcile current state with desired state, such as restoring a Deployment’s requested replica count. section 1.5
  • kube-scheduler assigns pods to nodes, considering available resources and placement rules. section 1.5
  • etcd stores cluster configuration data. section 2.1.2

The four core components run as system pods on the control plane node. Their YAML manifests reside in /etc/kubernetes/manifests, where the kubelet picks them up without scheduler placement. The kubelet itself runs as a Linux service on every node. Do not mistake every pod seen on the control plane for a core component: CoreDNS is a plugin, and kube-proxy runs on all nodes. A bootstrap taint prevents ordinary application pods from running on the control plane unless they tolerate it. section 2.1.2 section 2.4 section 9.3.1

kubectl get po -o wide -A --field-selector spec.nodeName=kind-control-plane

Run this command in the illustrated kind cluster to list pods assigned to kind-control-plane across namespaces. Check which core system pods appear, then distinguish them from plugins. section 2.1.2

Recover a control plane after a failed upgrade

Start with kubectl -n kube-system get po to check the API server pod. If the API is unavailable, SSH to the control plane node and check systemctl status kubelet, then inspect /etc/kubernetes/manifests. Use crictl ps -a to find exited components and crictl logs <containerid> to identify the failure. In one scenario, the API server log shows a refused connection to an incorrect etcd IP; correcting its manifest and restarting kubelet brings the API server back. Verify API access with kubectl get ns. Continue checking other components: Pending application pods can point to a scheduler failure, whose logs may reveal an incorrect kubeconfig path. section 8.2.5 section 8.2.5

How Acing the Certified Kubernetes Administrator Exam, Second Edition covers it

How deep it goes
Explains core component roles, static-pod placement, inspection, and a stepwise recovery scenario without detailing component internals.
Examples
Uses a node-filtered kubectl pod listing and a failed-upgrade investigation involving crictl logs, incorrect etcd connectivity, and scheduler configuration.
What it assumes
Builds on nodes and pods while introducing the control plane and worker-node distinction and defining each core component’s job.
What you can do after
Diagnose/debug with it by checking control plane pods, kubelet, manifests, and container logs, then verifying restored API access.
How it connects
Connects the API server, controllers, scheduler, etcd, kubelet, static pods, worker nodes, and taints.

Also explained in

Compare how 3 books explain control plane node →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Acing the Certified Kubernetes Administrator Exam, Second Edition. The section links point to the parts of the book it draws on.