World map

 

BM: Baca dalam Bahasa Melayu

World K1: The Food Court

The control plane and node parts

You will learn: who runs the manager’s office, and who cooks on every stall.

Checked with Kubernetes 1.37 on 31 Oct 2026

The problem

You are here: cluster kind-dev namespace default
A brand-new cluster: 12 pods already run in the kube-system namespace. Terminal output: $ kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE coredns-586c9d84b4-cncvd 1/1 Running 0 4m59s coredns-586c9d84b4-vl48c 1/1 Running 0 4m59s etcd-dev-control-plane 1/1 Running 0 5m kindnet-sc2x8 1/1 Running 0 4m59s kindnet-tsfhh 1/1 Running 0 4m59s kindnet-wj2hr 1/1 Running 0 4m59s kube-apiserver-dev-control-plane 1/1 Running 0 5m kube-controller-manager-dev-control-plane 1/1 Running 0 5m kube-proxy-4fvbg 1/1 Running 0 4m59s kube-proxy-5bm7l 1/1 Running 0 4m59s kube-proxy-8jtpv 1/1 Running 0 4m59s kube-scheduler-dev-control-plane 1/1 Running 0 5m

Your new cluster runs no apps yet. But 12 pods already run in kube-system. Who are they?

Try it

The manager’s office is the control plane: The manager's office: the parts that decide what runs where.. Tap its 4 pods. Their names end in dev-control-plane.

Tap the 4 pods of the manager’s office.

0 of 4 found

Watch

You are here: cluster kind-dev namespace default
kubectl cluster-info says the Kubernetes control plane is running at https://127.0.0.1:41000. Terminal output: $ kubectl cluster-info Kubernetes control plane is running at https://127.0.0.1:41000 CoreDNS is running at https://127.0.0.1:41000/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

The API server: The office's front counter. Every request, even from kubectl, goes through it. is the office’s front counter. Everyone talks only to it, even kubectl. kubectl cluster-info shows its address.

Predict

The office writes every order in one book: etcd: The order book: where the cluster keeps every object. Back it up.. The book is lost, and there is no backup. What then?

Pick one answer.

Try it

The scheduler: Picks a stall (node) with room for each new tray (pod). picks a stall for each new tray. Be the scheduler: put every tray on a stall with room.

Tap a tray, then tap a stall. Or drag the tray.

Waiting trays

  • dev-worker
    CPU 0 of 2
    Memory 0Mi of 4Gi
    • dev-worker2
      CPU 0 of 1
      Memory 0Mi of 2Gi
      • Pending

        Trays that fit on no stall wait here.

        Watch

        Each stall has a supervisor: the kubelet: The supervisor on every stall. It starts the trays the office sends there.. It starts the trays the office sends. Tap every line it wrote.

        Tap every event from the kubelet.

        0 of 4 found

        Watch

        You are here: cluster kind-dev namespace default
        Every node's container runtime is containerd. Terminal output: $ kubectl get nodes -o custom-columns=NAME:.metadata.name,RUNTIME:.status.nodeInfo.containerRuntimeVersion NAME RUNTIME dev-control-plane containerd://2.1.4 dev-worker containerd://2.1.4 dev-worker2 containerd://2.1.4

        The kubelet doesn’t cook. The stove does: containerd: The stove on each stall: the program that really runs the containers. runs the containers. They connect through a standard plug, the CRI (Container Runtime Interface): The standard plug between the kubelet and the stove (containerd)..

        Try it

        Office or stall? Sort each part.

        Drag a card into a box. Or tap the card, then tap the box.

            Check

            You apply a Deployment. Put its journey in order.

            First step at the top. Put these in order. Use the arrows, or drag.

            • The scheduler picks a stall for each pod
            • A controller sees it and asks for pods
            • The API server saves it in etcd
            • kubectl sends your order to the API server
            • The kubelet asks containerd to start them

            You did it!

            You can now name the parts of the office and of every stall.

            Go deeper (optional)

            The controller manager: One program that runs many controllers: the managers who walk the floor. is one program that runs many small controllers. With managed Kubernetes, the cloud runs the whole office for you. You only see the stalls.

            Real rep (optional): on your kind cluster, kubectl get pods -n kube-system -o wide shows which stall runs each part.