容器运行时

容器运行时(Container Runtime)是Kubernetes最重要的组件之一,负责真正管理镜像和容器的生命周期。Kubelet通过Container Runtime Interface (CRI)与容器运行时交互,以管理镜像和容器。

CRI

Container Runtime Interface (CRI)是Kubelet 1.5/1.6中主要负责的一块项目,它重新定义了Kubelet Container Runtime API,将原来完全面向Pod级别的API拆分成面向Sandbox和Container的API,并分离镜像管理和容器引擎到不同的服务。

容器运行时 - 图1

Docker

Docker runtime的核心代码在kubelet内部(pkg/kubelet/dockershim),是最稳定和特性支持最全的Runtime。

开源电子书《Docker从入门到实践》是docker入门和实践不错的参考。

Runc

Runc有两个实现,cri-o和cri-containerd

  • cri-containerd,已支持 Kubernetes v1.7 及以上版本
  • cri-o,已支持Kubernetes v1.6 及以上版本

Hyper

Hyper是一个基于Hypervisor的容器运行时,为Kubernetes带来了强隔离,适用于多租户和运行不可信容器的场景。

Hyper在Kubernetes的集成项目为frakti,https://github.com/kubernetes/frakti,目前已支持Kubernetes v1.6 及以上版本。

Rkt

rkt是另一个集成在kubelet内部的容器运行时,但也正在迁往CRI的路上,https://github.com/kubernetes-incubator/rktlet