CertGrid CertGrid
Hands-on Lab·Kubernetes and Cloud Native Security Associate

Container Runtime Security

The kubelet does not run containers - it asks a runtime to. That runtime has its own socket, its own namespaces and its own view of what is running, and none of it goes through the apiserver.

Cluster Component Security Guide 14 of 42 Intermediate

containerd 2.2.6 with the CRI plugin, SystemdCgroup = true. ctr is containerd's own client and talks to the socket directly, below CRI.

The cka5001 cluster: one control plane and 3 schedulable workers, on Cilium.
Server NameIP AddressOSRolesCPURAMHDD
CKA5001192.168.0.41Ubuntu 26.04 LTSControl Plane Node (tainted NoSchedule)2 Core4 GB50 GB
CKA5001-NODE01192.168.0.42Ubuntu 26.04 LTSWorker Node2 Core4 GB50 GB
CKA5001-NODE02192.168.0.43Ubuntu 26.04 LTSWorker Node2 Core4 GB50 GB
CKA5001-NODE03192.168.0.44Ubuntu 26.04 LTSWorker Node2 Core4 GB50 GB

This guide includes

Use this when the boundary between Kubernetes and the machine has to be made explicit. This matters because the kubelet runs no containers itself - it asks a runtime over a root-only socket, and that runtime's view of the node is larger than Kubernetes' own.

Before you start

  1. One socket, root only

  2. The runtime's own view, which is larger

  3. The runtime's security-relevant settings

Official sources