Google has announced integration with containerd is now generally available for Kubernetes. Containerd is a container runtime developed by Docker and donated to the Cloud Native Computing Foundation.
“Containerd is an OCI compliant core container runtime designed to be embedded into larger systems. It provides the minimum set of functionality to execute containers and manages images on a node,” the Kubernetes team wrote in a post.
With today’s announcement, containerd 1.1 can now be used as the container runtime for production Kubernetes clusters. Containerd 1.1 supports Kubernetes 1.10 and above as well as all Kubernetes features.
The Kubernetes team announced last year it would bring more container runtime options to Kubernetes. One way was to implement a Container Runtime Interface for containerd. The project was known as cri-containerd.
Cri-containerd is an “an implementation of CRI for containerd. It operates on the same node as the Kubelet and containerd. Layered between Kubernetes and containerd, cri-containerd handles all CRI service requests from the Kubelet and uses containerd to manage containers and container images. Cri-containerd manages these service requests in part by forming containerd service requests while adding sufficient additional function to support the CRI requirements.”
The cri-containerd daemon was refactored in containerd 1.1 as a containerd CRI plugin. The plugin is enabled by default. “Unlike cri-containerd, the CRI plugin interacts with containerd through direct function calls. This new architecture makes the integration more stable and efficient, and eliminates another grpc hop in the stack. Users can now use Kubernetes with containerd 1.1 directly. The cri-containerd daemon is no longer needed,” the team wrote.
In addition, containerd 1.1 improved the performance of pod startup latency and daemon resource usage, and focused on reducing CPU and memory overall.
The next stable release of Docker Community Edition is expected to include containerd 1.1. According to the team, switching to containerd does not mean users can stop using Docker Engine. With Docker CE, users will have the option to use the engine for other Docker purposes and configure Kubernetes to use containerd.
“Since containerd is being used by both Kubelet and Docker Engine, this means users who choose the containerd integration will not just get new Kubernetes features, performance, and stability improvements, they will also have the option of keeping Docker Engine around for other use cases,” the team wrote.
In addition, the team recommends using crictl as a replacement command-line interface over the Docker CLI. “crictl is a tool providing a similar experience to the Docker CLI for Kubernetes node troubleshooting and crictl works consistently across all CRI-compatible container runtimes,” the team explained.