捕鱼大亨网络版容器集成进入GA

捕鱼大亨网络版容器集成进入GA

s:Google的软件工程师Liu Lantao和IBM的开源开发倡导者Mike Brown

在上一个博客中- 容器化为捕鱼大亨网络版带来了更多的容器运行时选项,我们引入了捕鱼大亨网络版容器集成的Alpha版本。经过另外6个月的开发,现在可以与容器集成了!您现在可以使用 装箱的1.1 作为生产捕鱼大亨网络版集群的容器运行时!

Containerd 1.1可与捕鱼大亨网络版 1.10及更高版本一起使用,并支持所有捕鱼大亨网络版功能。容器集成的测试范围 Google Cloud Platform 捕鱼大亨网络版中的测试基础架构现在等效于Docker集成(请参阅: 测试仪表板).

我们很高兴看到集装箱运输业务迅速发展到这个里程碑。从第一天开始,阿里云就开始积极使用容器化,并且由于其简单性和健壮性,使其成为运行在无服务器捕鱼大亨网络版产品中的完美容器引擎,该产品在性能和稳定性方面具有很高的水准。毫无疑问,集装箱将成为集装箱时代的核心引擎,并将继续推动创新向前发展。

—阿里云阿里云工程师

架构改进

捕鱼大亨网络版容器集成架构已经发展了两次。每次改进都使堆栈更加稳定和高效。

容器式1.0-CRI容器(寿命终止)

包含危机的架构

对于容器1.0,需要一个名为cri-containerd的守护进程在Kubelet和容器之间运行。 Cri-containerd处理了 容器运行时接口(CRI) 来自Kubelet的服务请求,并使用容器来相应地管理容器和容器映像。与Docker CRI实现相比(码头工人),则消除了堆栈中的一跳。

但是,cri-containerd和containerd 1.0仍然是通过grpc进行交互的2个不同的守护程序。循环中额外的守护程序使用户理解和部署它变得更加复杂,并引入了不必要的通信开销。

容器1.1-CRI插件(当前)

集装箱式建筑

在容器1.1中,cri-containerd守护程序现在已重构为容器CRI插件。 CRI插件内置在容器1.1中,并默认启用。与cri-containerd不同,CRI插件通过直接函数调用与容器交互。这种新的体系结构使集成更加稳定和高效,并且消除了堆栈中的另一个grpc跃点。用户现在可以直接使用带有容器1.1的捕鱼大亨网络版。不再需要cri-containerd守护程序。

性能

提升性能是容器1.1发行版的主要重点之一。在Pod启动延迟和守护程序资源使用方面优化了性能。

以下结果是容器化1.1与Docker 18.03 CE之间的比较。容器化的1.1集成使用容器化内置的CRI插件; Docker 18.03 CE集成使用dockershim。

结果是使用捕鱼大亨网络版节点性能基准生成的,该基准是 捕鱼大亨网络版节点e2e测试。大多数包含基准的数据可以在 节点性能仪表板.

Pod启动延迟

“ 105个pod批处理启动基准测试”结果表明,与dockershim进行的Docker 18.03 CE集成相比,容器化1.1集成的Pod启动延迟更短(越低越好)。

latency

CPU和内存

在稳定状态下,与dockershim的Docker 18.03 CE集成相比,容器式1.1集成在105个pod的情况下总体上消耗的CPU和内存更少。结果随节点上运行的Pod的数量而变化,选择105是因为它是每个节点最大用户Pod的当前默认值。

如下图所示,与使用dockershim的Docker 18.03 CE集成相比,容器式1.1集成的kubelet cpu使用率降低了30.89%,容器运行时cpu使用率降低了68.13%,kubelet居民集大小(RSS)内存使用率降低了12.78,容器运行时RSS内存使用率降低%。

cpumemory

关键

容器运行时命令行界面(CLI)是用于系统和应用程序故障排除的有用工具。当使用Docker作为捕鱼大亨网络版的容器运行时时,系统管理员有时会登录捕鱼大亨网络版节点以运行Docker命令来收集系统和/或应用程序信息。例如,一个人可以使用 码头工人ps码头工人检查 检查申请流程状态, 码头工人图像 列出节点上的图像,以及 码头工人信息 识别容器运行时配置等

对于容器化和所有其他CRI兼容的容器运行时,例如dockershim,我们建议使用 关键 作为Docker CLI的替代CLI,用于对捕鱼大亨网络版节点上的Pod,容器和容器映像进行故障排除。

关键 是一个提供与Docker CLI类似的体验的工具,用于捕鱼大亨网络版节点故障排除和 关键 在所有与CRI兼容的容器运行时中均能一致地工作。它托管在 kubernetes-incubator / cri-tools 存储库,当前版本为 v1.0.0-beta.1. 关键 与Docker CLI相似,旨在为用户提供更好的过渡体验,但是并不完全相同。有一些重要的区别,如下所述。

范围有限-crictl是故障排除工具

范围 关键 仅限于故障排除,它不能替代docker或kubectl。 Docker的CLI提供了丰富的命令集,使其成为非常有用的开发工具。但这不是在捕鱼大亨网络版节点上进行故障排除的最佳选择。一些Docker命令对捕鱼大亨网络版没用,例如 码头工人网络码头工人;甚至可能破坏系统,例如 码头工人重命名. 关键 提供足够的命令来进行节点故障排除,可以说在生产节点上使用该命令更安全。

面向捕鱼大亨网络版

关键 提供了一个更加kubernetes友好的容器视图。 Docker CLI缺乏核心的捕鱼大亨网络版概念,例如 命名空间,因此无法清晰显示容器和吊舱。一个例子是 码头工人ps 显示一些晦涩难懂的长Docker容器名称,并同时显示暂停容器和应用程序容器:

码头工人ps

然而, 暂停容器 是pod实施的详细信息,其中每个pod使用一个暂停容器,因此在列出作为pod成员的容器时不应显示。

关键相反,它是为捕鱼大亨网络版设计的。它具有用于Pod和容器的不同命令集。例如, 脆荚 列出广告连播信息,以及 关键点 仅列出应用程序容器信息。所有信息的格式都正确地排列在表格列中。

脆荚 关键点

再举一个例子 脆荚 包括一个 --namespace 用于通过捕鱼大亨网络版中指定的名称空间过滤Pod的选项。

关键豆荚过滤器

有关如何使用的更多详细信息 关键 带容器:

Docker Engine呢?

“切换到容器是否意味着我不能再使用Docker Engine?”我们经常听到这个问题,简短的回答是“否”。

Docker Engine构建在容器之上。下一个版本 Docker社区版(Docker CE) 将使用容器版本1.1。当然,它将内置并默认启用CRI插件。这意味着用户可以选择继续将Docker Engine用于Docker用户的其他典型用途,同时还可以配置捕鱼大亨网络版以使用Docker Engine在同一节点上同时使用的基础容器。请参阅下面的架构图,该图显示了Docker Engine和Kubelet使用的相同容器:

docker-ce

由于Kubelet和Docker Engine都使用容器化,这意味着选择容器化集成的用户不仅将获得捕鱼大亨网络版的新功能,性能和稳定性方面的改进,还可以选择将Docker Engine保留在其他用例中。

一个集装箱 命名空间 采用机制确保Kubelet和Docker Engine不会看到或无法访问彼此创建的容器和图像。这样可以确保它们不会互相干扰。这也意味着:

  • 用户将不会看到捕鱼大亨网络版使用 码头工人ps 命令。请用 关键点 代替。反之亦然,用户将不会在kubernetes中或其他情况下看到Docker CLI创建的容器 关键点 命令。的 关键创建关键 runp 命令仅用于故障排除。手动启动容器或容器 关键 不建议在生产节点上使用。
  • 用户不会看到捕鱼大亨网络版使用 码头工人图像 命令。请使用 关键图片 命令代替。反之亦然,捕鱼大亨网络版不会看到由 码头工人拉, 码头工人负载 要么 码头工人 命令。请使用 关键拉 而是命令 点击率 犯罪负荷 如果您必须加载图像。

概要

  • 容器1.1本机支持CRI。 捕鱼大亨网络版可以直接使用它。
  • 集装箱式1.1已准备好生产。
  • 容器1.1在容器启动延迟和系统资源利用率方面具有良好的性能。
  • 关键 是用于与容器1.1和其他符合CRI的容器运行时进行通讯以进行节点故障排除的CLI工具。
  • Docker CE的下一个稳定版本将包含容器1.1。用户可以选择继续将Docker用于非捕鱼大亨网络版专用的用例,并配置捕鱼大亨网络版以使用Docker附带的相同基础容器。

我们要感谢来自Google,IBM,Docker,ZTE,ZJU和其他许多人的所有贡献者!

有关容器化1.1版本中更改的详细列表,请参阅此处的发行说明: //github.com/containerd/containerd/releases/tag/v1.1.0

试试看

要使用containerd作为容器运行时来设置捕鱼大亨网络版集群:

  • 有关在GCE上通过kube-up.sh启动的生产质量集群,请参阅 这里.
  • 有关多节点集群安装程序并使用Ansible和kubeadm提出步骤的信息,请参阅 这里.
  • 有关在Google Cloud上从头开始创建集群的信息,请参见 捕鱼大亨网络版艰难的道路.
  • 有关从发行版tarball进行的自定义安装,请参见 这里.
  • 要在本地VM上使用LinuxKit安装,请参阅 这里.

有助于

containerd CRI插件是containerd中的一个开源github项目 //github.com/containerd/cri。欢迎对想法,问题和/或修正做出任何贡献。的 开发人员入门指南 是供贡献者入门的好地方。

社区

该项目是由捕鱼大亨网络版 SIG节点社区和容器社区的成员共同开发和维护的。我们希望收到您的反馈。要加入社区: