CRI-O
CRI-O is a lightweight container runtime purpose-built for Kubernetes. It implements the Container Runtime Interface (CRI) to pull images and run containers using OCI-compliant runtimes, without the extra tooling that general-purpose container engines include.
itCloud native tools and technologies | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic: CRI-O
CRI-O is the Kubernetes node runtime that takes the kubelet's requests and turns them into running container processes. It is deliberately narrow. Kubernetes decides what should run, the kubelet asks for the work on one node, and CRI-O prepares the work. This is not a tiny Kubernetes hiding in a trench coat. It is the part that makes the node's container work happen.
The useful picture is a chain: control plane, kubelet, CRI-O, then an OCI runtime, the component that starts the process. On the way, CRI-O retrieves image content, prepares a filesystem, and creates a Pod sandbox. conmon watches the container process, while a CNI plugin gives the Pod its network. Each component has a separate job, which is excellent until several jobs decide to fail in the same afternoon.
The surprising bit is that CRI-O is neither the scheduler nor a developer container platform. It does not build, sign, or push images. It does not implement the network plugin. The Container Runtime Interface, or CRI, is the gRPC contract between kubelet and runtime; OCI specifications cover portable image and runtime formats. Similar initials, distinct jobs, and no mercy for a diagnosis that mixes them up.
Treat CRI-O as node infrastructure. Cgroup settings must agree with the kubelet, runtime and Kubernetes minor streams must be compatible, and a Pod symptom can begin in storage, image retrieval, networking, or the OCI runtime. Start with the Intro for the full request path, use the Slides when the surrounding components have become a bowl of arrows, and keep the Cheatsheet nearby for crictl and the boundary-by-boundary diagnostic sequence.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://cri-o.io/
Supports
- CRI-O as an implementation of Kubernetes CRI for OCI-compatible runtimes
- Request path from Kubernetes and kubelet through CRI-O to an OCI runtime
- Use of containers image and storage libraries
- conmon monitoring and logging role
- CNI delegation for Pod networking
- Current distribution packaging entry points
- https://github.com/cri-o/cri-o
Supports
- CRI-O project scope and explicit exclusions
- Container image, process lifecycle, monitoring, logging, and isolation responsibilities
- Kubernetes and CRI-O minor release alignment with independent patch schedules
- Configuration areas for CRI-O, registries, image policy, and storage
- crictl as a client for CRI-compatible runtimes
- Runtime, metrics, tracing, and debugging documentation entry points
- https://kubernetes.io/docs/concepts/containers/cri/
Supports
- CRI as the kubelet-to-runtime plugin interface and gRPC protocol
- Kubelet role as CRI client
- Separate runtime and image service endpoints
- CRI version 1 requirement for Kubernetes from version 1.26
- https://kubernetes.io/docs/setup/production-environment/container-runtimes/
Supports
- Requirement for a container runtime on every node
- Need for aligned kubelet and runtime cgroup drivers
- systemd cgroup-driver guidance on systemd hosts
- CRI-O default systemd cgroup driver
- Default CRI-O socket path
- CRI-O pause-image configuration and live reload behavior
- Runtime setup as separate from network-plugin setup
- https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md
Supports
- crictl use of the CRI API
- Runtime, sandbox, container, image, log, inspect, and filesystem commands
- Explicit runtime-endpoint configuration
- https://cri-o.github.io/cri-o/
Supports
- Official CRI-O release history organized by version
- https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/
Supports
- Kubernetes 1.5 introduction of CRI as a runtime plugin interface
- https://docs.redhat.com/en/documentation/openshift_container_platform/3.7/pdf/release_notes/OpenShift_Container_Platform-3.7-Release_Notes-en-US.pdf
Supports
- OpenShift 3.7 documentation of CRI-O v1.0
- https://kubernetes.io/blog/2018/03/first-beta-version-of-kubernetes-1-10/
Supports
- Beta CRI validation suite in Kubernetes 1.10
- https://kubernetes.io/blog/2018/10/kubernetes-v1-12-introducing-runtimeclass/
Supports
- RuntimeClass beta introduction in Kubernetes 1.12
- https://cri-o.github.io/cri-o/v1.20.0.html
Supports
- CRI-O 1.20 runtime-handler annotation controls
- https://kubernetes.io/blog/2022/05/03/kubernetes-1-24-release-announcement/
Supports
- Kubernetes 1.24 removal of dockershim from kubelet
- https://kubernetes.io/blog/2022/12/09/kubernetes-v1-26-release/
Supports
- Kubernetes 1.26 removal of CRI v1alpha2 support
- https://cri-o.github.io/cri-o/v1.30.0.html
Supports
- CRI-O 1.30 release date and release stream
- https://containerd.io/
Supports
- containerd as a container runtime option
- https://docs.docker.com/engine/
Supports
- Docker Engine runtime documentation
- https://www.mirantis.com/software/mirantis-container-runtime/
Supports
- Mirantis Container Runtime product information
- https://katacontainers.io/
Supports
- Kata Containers as an OCI runtime option
