在 DockerCon 2017 欧洲大会上,Docker 宣布将在 Docker Platform 和 Moby Project 中集成Kubernetes 。下一版本的Docker EE(即Docker 企业版本, Docker Enterprise Edition )将支持用户在同一集群中运行 Swarm 和 Kubernetes 工作负载。Docker EE 的 beta 版计划于 2017 年底前推出,其中 Docker for Mac 和 Docker for Windows 的 Beta 版将集成“可选的”Kubernetes。
作为“企业级”的容器平台, Docker EE 通过私有注册及更多的安全特性,提供了一种集中化控制平台和软件供应链管理。Docker EE 很快将会支持 Swarm 和 Kubernetes 编排器共处于同一 Linux 集群上,如图所示:
同时提供 Swarm 和 Kubernetes 的 Docker EE 编排(图片来自于 Docker 官方博客)
2016 年,Docker 在平台中添加了“ Swarm 模式”编排,这是由 SwarmKit 项目提供支持的。在此前一年, Kubernetes 编排平台就已发布了 1.0 版本,并由 Google 作为种子项目捐赠给 (CNCF) (原生云计算基金会,Cloud Native Computing Foundation)。Docker 官方博客指出,来自于用户的反馈希望 Docker 能支持多种编排技术:
我们得到反馈,部分用户确实喜欢具有端到端容器管理的集成 Docker 平台,但是他们也想使用其它的编排器(例如 Kubernetes)进行容器调度。这可能是因为他们已将服务设计运行在 Kubernets 上,也可能是因为 Kubernets 能提供他们所寻求的一些特殊功能。
Docker 还宣布,他们将在 2017 年底前以 Beta 版程序的形式,为运行在 Mac 和 Windows 上的 Docker CE (社区版,Community Edition)添加“可选的 Kubernetes”。对此有兴趣的读者可以注册 beta.docker.com 。
对于下一版本的 Docker 平台,开发人员可使用自己的工作站直接在 Kubernetes 上构建和测试最终用于生产环境的应用。运维人员可在运行由 Kubernetes 或 Swarm 编排的生产环境应用时,使用 Docker EE 的所有特性,例如安全的多租用、图片扫描和基于角色的访问控制等。
Docker 官方博客指出,虽然 Kubernetes 社区已经构建了一些“切实的解决方案”,用于在本地工作站上安装 Kubernetes 开发设置,例如 minikube 项目。但是“对于 docker build、run 和 test 紧密结合的迭代过程,实现起来依然相当棘手”。一旦在 Docker for Mac 和 for Windows 中添加了对 Kubernetes 的支持,开发人员将可使用同一开发系统构建 Docker Compose、基于 Swarm 的应用和 Kubernetes 应用。
Docker 也将使用 Custom Resources 和 API 服务器聚集(API Server Aggregation)层构建 Kubernetes 组件,以使 Docker Compose 应用易于作为 Kubernetes 原生的 Pods 和 Services 部署。Docker Inc 的创始人兼 CTO Solomon Hykes 在 Docker 官方博客上指出,要集成到 Docker 中的 Kubernetes 版本将会是“为所有人所熟悉的 vanilla Kubernetes。这一版本直接来自于 CNCF,它既不是一个分支,也不是一个过期版本,不会具有任何形式的包装或受限”。尽管显然 Docker 正加大对 Kubernetes 的投资,但 Kykes 还是强调指出,Docker 依然致力于 Swarm:
虽然我们正在 Docker 中添加 Kubernetes 编排选项,但是我们依然致力于 Swarm,并服务于那些在大规模在生产中使用 Swarm 和 Docker 运行关键应用的客户及用户。
与此同时,值得注意的是,随着 CRI (容器运行时接口,Container Runtime Interface)在 2016 年的引入,Kubernetes 平台已而降低了与 Docker 容器运行时的耦合。现在有多个在开发的项目使用 CRI 将容器运行时集成到 Kubernetes 中,虽然它们尚未准备就绪用于生产环境。其中包括: cri-o ,一种符合 Open Containers Initiative (OCI) 的运行时; rktlet ,CoreOs rkt 容器的运行时; cri-containerd ,一种得到Docker 支持的containerd 实现。
自去年开始,Docker 已经开始通过 Moby Project 去迎合 Kubernetes,并对 Kubernetes 做出贡献。其中的项目包括:前面所提及的 containerd 和 cri-containerd,用于容器运行时; LinuxKit ,用于构建运行容器的自定义安全、可移植且精益的操作系统; InfraKit ,用于声明式且自愈合架构的创建和管理; Notary ,通过 Docker 及其它容器的项目签名和验证容器。
对于即将推出的 Docker EE 和 CE 原生支持 Kubernetes ,更多信息敬请查看 Docker 官方博客。读者也可以注册 beta.docker.com 获得 Beta 版程序。
查看英文原文: DockerCon Europe 2017: Docker EE and CE to Include Kubernetes Integration
评论