版本知识点
k8s从1.20升级到v1.27,v1.2以前在集群内,是通过 dockershim 使用 Docker Engine 作为容器运行时,因为dockershim 维护的问题弃用,升级集群的话用cri-dockerd 代替dockershim
在 Kubernetes v1.24 及更早版本中,你可以在 Kubernetes 中使用 Docker Engine, 依赖于一个称作 dockershim 的内置 Kubernetes 组件。 dockershim 组件在 Kubernetes v1.24 发行版本中已被移除;不过,一种来自第三方的替代品,
cri-dockerd
是可供使用的。cri-dockerd
适配器允许你通过 容器运行时接口(Container Runtime Interface,CRI) 来使用 Docker Engine
可以安装 cri-dockerd 并使用它将 kubelet 连接到 Docker Engine
升级前了解的扩展知识,推荐阅读:
Docker现在在Kubernetes中被弃用了?我该怎么办?
容器运行时
容器运行时分为两种类型:CRI和OCI,它们的区别和联系:
在 Kubernetes 1.27 中,CRI(Container Runtime Interface)是 Kubernetes 与容器运行时进行通信的标准接口。CRI runtimes 是指实现了 CRI 接口规范的容器运行时,例如 Docker、CRI-O、containerd 等。Kubernetes 使用 CRI 接口与 CRI runtimes 进行交互,以管理容器的生命周期、资源限制和网络设置等。
OCI(Open Container Initiative)是一个开放的工业化容器标准。OCI 规范定义了容器格式和运行时标准,以确保容器在不同平台和环境中的互操作性和可移植性。CRI runtimes 与 OCI 的联系在于,CRI runtimes 可以使用 OCI 规范定义的容器格式运行容器,以确保容器的互操作性和可移植性。因此,大多数 CRI runtimes 都支持 OCI 规范,并使用 OCI 格式作为默认容器格式。
总之,CRI runtimes 是 Kubernetes 中实现了 CRI 接口规范的容器运行时,用于管理容器的生命周期、资源限制和网络设置等。而 OCI 是一个开放的工业化容器标准,定义了容器格式和运行时标准,以确保容器在不同平台和环境中的互操作性和可移植性。CRI runtimes 与 OCI 的联系在于,CRI runtimes 可以使用 OCI 规范定义的容器格式运行容器,以确保容器的互操作性和可移植性。因此,大多数 CRI runtimes 都支持 OCI 规范,并使用 OCI 格式作为默认容器格式。
一般称呼容器运行时指的是CRI
Kubernetes 多个容器运行CRI时,常用的有以下几种:
1. Docker:Docker 是目前最受欢迎的容器运行时之一,它支持 OCI 规范定义的容器格式,并提供了丰富的容器管理功能。
2. containerd:containerd 是一个轻量级的容器运行时,它是 Docker 引擎的一部分,并支持 OCI 规范定义的容器格式。containerd 可以与 Kubernetes 集成,提供容器的生命周期管理和资源限制等功能。
3. CRI-O:CRI-O 是一个专门为 Kubernetes 设计的轻量级容器运行时,它实现了 CRI 接口规范,并支持 OCI 规范定义的容器格式。CRI-O 的设计目标是提供最小化的依赖和最佳的性能。
4. rkt:rkt 是一个安全的、可信的容器引擎,它支持 OCI 规范定义的容器格式,并