Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Does Kubernetes usage also require podman or docker?


Kubernetes needs a container runtime, of which docker is a supported type (but deprecated and replaced with containerd for most users): https://kubernetes.io/docs/setup/production-environment/cont...


Kubernetes requires a tool which implements the Container Runtime Interface (CRI), a standardized API for starting & managing containers. This is from 2015-2016[1]. The CRI interface is defined by & owned by Kubernetes, and there's a lot of implementations: runc, crun, youki, dockershim and likely more.

For a while Kubernetes has included something called the "dockershim", it's own implementation of a CRI interface that, under the hood, calls Docker or Podman, so Kubernetes "pods" run in Docker/Podman. There's also tools like Kind[3] ("kubernetes in docker") that go further- not just hosting Kubernetes worker containers in Docker, but hosting the main kubernetes daemons also in Docker.

Kubernetes deprecated Dockershim, formally in December 2020, but is just throwing the switch now in the upcoming 1.24, expected mid-April[4]. A company Mirantis has pledged to take over support of Dockershim[5], and is calling the new effort "cri-dockerd"[6]. This should allow Kubernetes workers to continue to run via Docker or Podman.

Kind is unaffected, since it runs the main Kubernetes controllers in Docker, which then launch their own opencontainerd (one off the main CRI implementations) inside that Docker container, nested like, so no dockership/cri-dockerd is needed).

Worth re-noting that Podman includes tools to try to run Kubernetes pods directly, without running the rest of Kubernetes.

[1] https://kubernetes.io/blog/2016/12/container-runtime-interfa...

[2] https://github.com/kubernetes/cri-api

[3] https://kind.sigs.k8s.io/

[4] https://kubernetes.io/blog/2022/01/07/kubernetes-is-moving-o...

[5] https://www.mirantis.com/blog/mirantis-to-take-over-support-...

[6] https://github.com/Mirantis/cri-dockerd


Most modern Kubernetes implementations use either containerd or cri-o.


Kubernetes can support multiple solutions if I am not mistaken.

I know rancher requires Docker and is not compatible with Podman as of today.

And I believe Red Hat uses Podman in Openshift, their implementation of kubernetes.


Podman is only used for bootstrapping the cluster with the OpenShift installer. The cluster itself uses cri-o.


OpenShift uses cri-o as the runtime.


Kubernetes can use either




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: