Dockershim弃用常见问题解答

本文档介绍了有关Dockershim的一些常见问题 Kubernetes v1.20版本宣布弃用。欲了解更多信息 将Docker弃用为Kubernetes kubelets的容器运行时,以及 这意味着什么,请查看博客文章 不要惊慌:Kubernetes和Docker.

为什么不赞成使用dockershim?

维护dockershim已成为Kubernetes维护人员的沉重负担。 创建CRI标准以减轻这种负担并实现顺畅的互操作性 不同的容器运行时。 Docker本身目前尚未实现CRI, thus the problem.

Dockershim一直被认为是一个临时解决方案(因此名称:shim)。 您可以在网站上阅读有关社区讨论和计划的更多信息。 Dockershim移除Kubernetes增强建议.

此外,与dockershim基本上不兼容的功能,例如 由于cgroups v2和用户名称空间正在这些较新的CRI中实现 运行时。删除对dockershim的支持将允许在 those areas.

我仍然可以在Kubernetes 1.20中使用Docker吗?

是的,在1.20中唯一更改的是在以下位置打印了一个警告日志 kubelet 如果使用Docker作为运行时启动

dockershim何时会被删除?

鉴于此更改的影响,我们使用了延长的弃用时间表。 它不会在Kubernetes 1.22之前删除,这意味着如果没有 dockershim将于2021年末达到1.23。我们将与供应商紧密合作 以及其他生态系统团体,以确保平稳过渡并评估情况 随着形势的发展。

我现有的Docker映像仍然可以使用吗?

Yes, the images produced from docker build will work with all CRI implementations. 您所有现有的图像仍将完全相同。

私人图片呢?

是。所有CRI运行时都支持在 通过PodSpec或ServiceAccount的Kubernetes。

Docker和容器是一回事吗?

Docker普及了Linux容器模式,并在 开发基础技术,但是Linux中已经存在容器 需很长时间。容器生态系统已发展到不仅限于 码头工人OCI和CRI等标准已帮助许多工具发展壮大, 生态系统,一些取代了Docker的方面,而另一些则增强了现有的 functionality.

今天有没有在生产中使用其他运行时的示例?

所有Kubernetes项目产生的工件(Kubernetes二进制文件)都经过验证 with each release.

此外, 项目已使用容器处理了一段时间,并且已经 看到其用例的稳定性有所提高。实物和容器化 每天多次验证Kubernetes代码库的任何更改。其他 相关项目也遵循类似的模式,显示了稳定性和 其他容器运行时的可用性。例如,OpenShift 4.x已 using the CRI-O 自2019年6月起投入生产。

对于其他示例和参考,您可以查看容器化和 CRI-O,Cloud Native Computing Foundation下的两个容器运行时(CNCF)。

人们一直在引用OCI,那是什么?

OCI代表 开放容器倡议,它标准化了许多 容器工具和技术之间的接口。他们保持标准 包装容器映像(OCI映像规范)和运行容器的规范 (OCI运行时规范)。他们还维护运行时规范的实际实现 in the form of Runc,这是两者的基础默认运行时 装箱的CRI-O。 CRI建立在这些低级规范之上 提供用于管理容器的端到端标准。

我应该使用哪个CRI实现?

这是一个复杂的问题,它取决于许多因素。如果Docker是 为您工作,迁移到容器应该相对容易,并且 将具有严格更好的性能和更少的开销。但是,我们鼓励您 探索所有的选项 CNCF景观 万一另一个是 甚至更适合您的环境。

更改CRI实现时应该注意什么?

尽管底层容器化代码在Docker和大多数容器之间是相同的 CRI(包括容器)在边缘有一些区别。一些 迁移时要考虑的常见事项是:

  • 记录配置
  • 运行时资源限制
  • 调用docker或通过其控制套接字使用docker的节点配置脚本
  • 需要Docker CLI或控制套接字的Kubectl插件
  • 需要直接访问Docker的Kubernetes工具(例如kube-imagepuller)
  • Configuration of functionality like registry-mirrors 和 insecure registries
  • 期望Docker可用并运行的其他支持脚本或守护程序 Kubernetes以外的地方(例如监视或安全代理)
  • GPU或特殊硬件以及它们如何与运行时和Kubernetes集成

如果您使用Kubernetes资源请求/限制或基于文件的日志收集 DaemonSet,那么它们将继续工作,但是如果您已自定义 您的dockerd配置,您需要对其进行调整以适应新的容器 运行时(如果可能)。

需要注意的另一件事是期望为系统维护而运行的任何东西 或在构建图像时不再嵌套在容器中。为了 前者,您可以使用 crictl 作为替代工具(请参见 从docker cli映射到crictl)和 后者,您可以使用更新的容器构建选项,例如 img, 积木, iko子, 要么 kubectl的buildkit-cli 不需要Docker。

对于集装箱,您可以从 文件资料 看什么配置 选项在您迁移事物时可用。

有关如何在Kubernetes中使用容器式和CRI-O的说明,请参阅 Kubernetes文档 容器运行时

如果我还有其他问题怎么办?

如果使用供应商支持的Kubernetes发行版,则可以向他们询问 他们产品的升级计划。对于最终用户的问题,请发布它们 到我们的最终用户社区论坛: //discuss.sjzrbxc.cn/.

您还可以查看出色的博客文章 等等,现在在Kubernetes中已弃用Docker? 更深入的技术 讨论更改。

能抱抱我吗?

随时随地,只要您想! -