官术网_书友最值得收藏!

Container runtime

Kubelet is not directly coupled with Docker – in fact, as we mentioned in the introduction to this section, Docker is not the only container runtime that Kubernetes supports. To perform container-related tasks, for example, pulling an image or creating a new container, kubelet utilizes the Container Runtime Interface (CRI), which is a plugin interface that abstracts all common container operations for different runtimes.

The actual definition of the Container Runtime Interface is a protobuf API specification, which can be found in the official repository:  https://github.com/kubernetes/cri-api/. Any container runtime that implements this specification can be used to execute container workloads in Kubernetes.

Currently, there are numerous container runtimes that can be used with Kubernetes on Linux. The most popular are as follows:

  • Docker: The traditional Docker runtime, abstracted by dockershim, which is the CRI implementation for kubelet.
  • CRI-containerd: In short, containerd is a component of Docker that is responsible for the management of containers. Currently, CRI-containerd is the recommended runtime for Kubernetes on Linux. For more information, please visit https://containerd.io/.
  • CRI-O: The container runtime implementation dedicated to CRI that follows the Open Containers Initiative (OCI) specification. For more information, please visit https://cri-o.io/.
  • gVisor: The OCI-compatible sandbox runtime for containers that's integrated with Docker and containerd. For more information, please visit https://gvisor.dev/.

The difference between dockershim and CRI-containerd can be seen in the following diagram:

The CRI-containerd runtime offers a much simpler architecture with less communication between daemons and processes, thereby eliminating the traditional Docker Engine. This solution aims at providing a stripped down Docker runtime that exposes the crucial components for Kubernetes.

If you are interested in getting a more historical context regarding Docker and containerd separation, you can read the following article:  http://alexander.holbreich.org/docker-components-explained/.

For Windows, the list is much shorter, and currently includes Docker (Enterprise Edition 18.09+, also abstracted by dockershim) and incoming support for CRI-containerd. This is expected to be available when a stable version of containerd, 1.3, is released and runhcs shim is fully supported. This will also come with new support for Hyper-V isolation for containers, which is currently (as of Kubernetes 1.17) implemented without CRI-containerd as a limited experimental feature.

主站蜘蛛池模板: 图木舒克市| 奉新县| 华坪县| 新安县| 竹山县| 临武县| 铅山县| 五原县| 孟村| 石棉县| 全州县| 元氏县| 湟源县| 阳江市| 昌图县| 亚东县| 兴海县| 扬中市| 宜良县| 乌拉特前旗| 剑川县| 深水埗区| 福州市| 楚雄市| 吉林市| 金乡县| 闵行区| 上思县| 通道| 五台县| 泗水县| 文化| 长汀县| 新郑市| 开江县| 禄劝| 教育| 收藏| 高平市| 阿荣旗| 汾阳市|