World map

 

BM: Baca dalam Bahasa Melayu

World K9: Cluster Admin

The kubelet: systemctl and journalctl

You will learn: how to check, restart and read the kubelet from inside a node.

Checked with Kubernetes 1.37 on 1 Nov 2026

The problem

A machine rebooted at 3 a.m. Soon its stall was Ready again. Nobody typed a thing. Who started its supervisor, the kubelet?

Pick one answer.

Watch

You are here: cluster kind-dev namespace default
Inside dev-worker: systemctl status kubelet says loaded and enabled, active (running), with the kubelet's last journal lines under it. Terminal output: $ ssh dev-worker # kind nodes have no SSH server: on kind you type docker exec -it dev-worker bash. Here ssh opens the same node shell, like on the exam. $ systemctl status kubelet ● kubelet.service - kubelet: The Kubernetes Node Agent Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; preset: enabled) Drop-In: /etc/systemd/system/kubelet.service.d └─10-kubeadm.conf, 11-kind.conf Active: active (running) since Sat 2026-10-31 00:55:03 UTC; 5min ago Invocation: 2191aa2042fa6701372c44f6e47756bf Docs: http://kubernetes.io/docs/ Process: 331 ExecStartPre=/bin/sh -euc if [ -f /sys/fs/cgroup/cgroup.controllers ]; then /kind/bin/create-kubelet-cgroup-v2.sh; fi (code=exited, status=0/SUCCESS) Process: 340 ExecStartPre=/bin/sh -euc if [ ! -f /sys/fs/cgroup/cgroup.controllers ] && [ ! -d /sys/fs/cgroup/systemd/kubelet ]; then mkdir -p /sys/fs/cgroup/systemd/kubelet; fi (code=exited, status=0/SUCCESS) Main PID: 342 (kubelet) Tasks: 11 (limit: 1263) Memory: 26.6M (peak: 27.1M) CPU: 854ms CGroup: /kubelet.slice/kubelet.service └─342 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --node-ip=172.18.0.3 --provider-id=kind://docker/dev/dev-worker --node-labels= --runtime-cgroups=/system.slice/containerd.service Oct 31 00:55:03 dev-worker systemd[1]: Started kubelet.service - kubelet: The Kubernetes Node Agent. Oct 31 00:55:03 dev-worker kubelet[342]: I1031 00:55:03.023576 342 server.go:545] "Kubelet version" kubeletVersion="v1.37.0" Oct 31 00:55:03 dev-worker kubelet[342]: I1031 00:55:03.025588 342 server.go:547] "Golang settings" GOGC="" GOMAXPROCS="" GOTRACEBACK="" Oct 31 00:55:03 dev-worker kubelet[342]: I1031 00:55:03.028500 342 kubelet.go:389] "Adding static pod path" path="/etc/kubernetes/manifests" Oct 31 00:55:03 dev-worker kubelet[342]: I1031 00:55:03.031412 342 kubelet.go:400] "Adding apiserver pod source" Oct 31 00:55:03 dev-worker kubelet[342]: I1031 00:55:03.034324 342 kuberuntime_manager.go:315] "Container runtime initialized" containerRuntime="containerd" version="v2.3.4" apiVersion="v1" Oct 31 00:55:03 dev-worker kubelet[342]: I1031 00:55:03.037236 342 server.go:1336] "Started kubelet" Oct 31 00:55:03 dev-worker kubelet[342]: I1031 00:55:03.039952 342 server.go:196] "Starting to listen" address="0.0.0.0" port=10250 Oct 31 00:55:03 dev-worker kubelet[342]: I1031 00:55:03.041964 342 volume_manager.go:331] "Starting Kubelet Volume Manager" Oct 31 00:55:03 dev-worker kubelet[342]: I1031 00:55:03.045523 342 reconciler.go:29] "Reconciler: start to sync state"

That service manager is systemd: The building's power room: it starts services like the kubelet at boot and restarts them if they crash., the machine’s power room. systemctl status kubelet asks it: is the supervisor on duty, and since when?

Try it

Read it like an admin. Tap two lines: “starts at boot” and “runs now”.

Tap the 2 lines that matter most.

0 of 2 found

Try it

After a kubelet setting changes, you restart it. Type ssh dev-worker, then systemctl restart kubelet. Then read its journal: The supervisor's diary: log lines systemd keeps for each service. Read it with journalctl.: journalctl -u kubelet -n 5 --no-pager. Careful: a restart changes the node.

You are here: cluster kind-dev namespace default
Stalls: 3. Trays: 3 (3 ready). Waiting for a stall: 0.
dev-control-planeOpenManager

No trays here.

dev-workerOpen
  • shop·7fm98
  • shop·l72qr
dev-worker2Open
  • shop·h9k94
Time: +0s (sped up)

Try it

Build the command for the kubelet’s last 20 diary lines.

Tap the pieces in the right order.

…

Predict

You stop the kubelet on dev-worker. What happens to its trays right away?

Pick one answer.

Check

Does it only look, or does it change the stall? Sort the commands.

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

      You did it!

      You can now check, restart and read the kubelet.

      Go deeper (optional)

      cat /etc/systemd/system/kubelet.service shows Restart=always: if the kubelet crashes, systemd starts it again. A planned systemctl stop stays stopped. journalctl -u kubelet -f follows new lines live; press Ctrl+C to leave.

      Real mission

      1. kubectl config current-context
      2. docker exec dev-worker systemctl status kubelet --no-pager
      3. docker exec dev-worker journalctl -u kubelet -n 20 --no-pager
      4. docker exec dev-worker systemctl cat kubelet

      0 of 4 steps done · Your ticks are saved.