本文发布已超过一年。较旧的文章可能包含过时的内容。请检查页面信息自发布以来是否已发生变化。

Kubernetes 1.5:支持生产工作负载

今天我们宣布发布 Kubernetes 1.5。本次发布紧随 KubeCon/CloudNativeCon 之后,用户在会上分享了他们如何在 Kubernetes 上运行应用。许多人表示有兴趣在容器中运行有状态应用,最终目标是在 Kubernetes 上运行所有应用。如果你一直在等待尝试在 Kubernetes 上运行分布式数据库,或者寻求保证有状态和无状态应用的服务中断 SLO 的方法,本次发布将为你提供解决方案。

StatefulSet 和 PodDisruptionBudget 正进入 Beta 阶段。这些特性结合在一起,提供了一种更容易部署和扩展有状态应用的方式,并使得在执行节点升级等集群操作时,不会违反应用的服务中断 SLO。

你还会发现整个版本在可用性方面有所改进,首先是你们经常使用的 kubectl 命令行界面。对于那些发现难以设置多集群联邦的用户,这里提供了一个名为“kubefed”的新命令行工具来帮助你。并且,kube-up 中添加了一个备受期待的多区域高可用(HA)主节点设置脚本。

你知道 Kubernetes 社区正在努力支持 Windows 容器吗?如果你有 .NET 开发者,请关注本次发布中关于 Windows 容器的工作。这项工作处于早期的 Alpha 阶段,我们非常期待你的反馈。

最后,对于对 Kubernetes 内部机制感兴趣的人,1.5 引入了容器运行时接口(CRI),它提供了一个内部 API,用于将容器运行时从 kubelet 中抽象出来。这种运行时的解耦为用户提供了选择最适合其需求的运行时的机会。本次发布还引入了容器化节点一致性测试,用于验证节点软件是否满足加入 Kubernetes 集群的最低要求。

新特性概览

StatefulSet Beta(之前称为 PetSet)允许在 Kubernetes 上创建扩展删除修复需要持久身份或每实例存储的工作负载。你可以使用 StatefulSets 轻松部署任何有状态服务,仓库中提供了教程示例。为了确保绝不会有两个具有相同身份的 Pod,Kubernetes 节点控制器不再强制删除无响应节点上的 Pod。相反,它会等待,直到旧 Pod 通过以下几种方式之一被确认死亡:当 kubelet 回报并确认旧 Pod 已终止时自动确认;当集群管理员删除节点时自动确认;或当数据库管理员确认可以安全进行并通过强制删除旧 Pod 时确认。用户现在如果尝试通过 CLI 强制删除 Pod 会收到警告。对于将从 PetSets 迁移到 StatefulSets 的用户,请遵循升级指南

PodDisruptionBudget Beta 是一个 API 对象,它指定了给定 Pod 集合在任何时候必须保持运行的最少数量或最少百分比副本。通过 PodDisruptionBudget,应用部署者可以确保主动驱逐 Pod 的集群操作永远不会同时下线太多 Pod,从而导致数据丢失、服务中断或不可接受的服务降级。在 Kubernetes 1.5 中,“kubectl drain” 命令支持 PodDisruptionBudget,允许安全地排空节点以进行维护活动,并且很快节点升级和集群自动伸缩器(移除节点时)也将使用它。这对于基于法定人数的应用可能很有用,以确保运行的副本数永远不会低于法定人数所需数量;对于 Web 前端也很实用,以确保处理负载的副本数永远不会低于某个百分比。

Kubefed Alpha 是一个帮助你管理联邦集群的新命令行工具,使得部署新的联邦控制平面以及从现有联邦中添加或移除集群变得简单。集群联邦中的新特性还包括将 ConfigMaps Alpha、DaemonSets Alpha 和 Deployments Alpha 添加到联邦 API 中,允许你从单个端点跨多个集群创建、更新和删除这些对象。

高可用主节点 Alpha 提供了使用 kube-up/kube-down 脚本在 GCE 上创建和删除具有高可用(复制)主节点的集群的能力。它允许设置跨区域分布的高可用主节点,每个区域至少有一个 etcd 副本,每个区域至少一个 API 服务器,以及调度器和控制器管理器等选举出的主控组件分布在不同区域。

Windows Server 容器 Alpha 提供了对 Windows Server 2016 节点和调度 Windows Server 容器的初步支持。

容器运行时接口 (CRI) Alpha 引入了 v1 CRI API,允许插入式容器运行时;实验性的 docker-CRI 集成已准备好进行测试和反馈。

节点一致性测试 Beta 是一个容器化测试框架,为节点提供系统验证和功能测试。该测试验证节点是否满足 Kubernetes 的最低要求;通过测试的节点有资格加入 Kubernetes 集群。节点一致性测试可在 gcr.io/google_containers/node-test:0.2 获取,供用户验证节点设置。

这些只是我们今年最后一个版本的一些亮点。完整列表请访问发布说明

获取方式
Kubernetes 1.5 可在此 GitHub 链接和通过 get.k8s.io 下载。要开始使用 Kubernetes,请尝试新的交互式教程。别忘了在假期前试用一下 1.5 版本!

用户采用情况
自正式可用(GA)以来已有一年半时间,Kubernetes 用户采用率持续超出预期。在 Kubernetes 上运行生产工作负载的组织包括全球最大公司、初创企业以及介于两者之间的各类公司。由于 Kubernetes 是开源的且可以在任何地方运行,我们看到它在各种平台上得到应用;例如 Pokémon Go (Google Cloud)、Ticketmaster (AWS)、SAP (OpenStack)、Box (裸金属) 以及混合上述环境的场景。以下是一些用户亮点

  • Yahoo! JAPAN -- 构建了一条自动化工具链,使得从代码提交到部署变得简单,同时在 Kubernetes 上运行 OpenStack。
  • 沃尔玛 (Walmart) -- 将使用 Kubernetes 和 OneOps 来管理其庞大的分销中心,助力其团队提升交付速度、系统正常运行时间和资产利用率。 
  • Monzo -- 一家正在构建移动优先银行的欧洲初创公司,正在使用 Kubernetes 为其核心平台提供支持,该平台能够处理极致的性能和一致性要求。

Kubernetes 生态系统
Kubernetes 生态系统正在迅速发展,其中包括微软在 Azure Container Service 中对 Kubernetes 的支持、VMware 在其 Photon Platform 中集成 Kubernetes,以及 Canonical 对 Kubernetes 的商业支持。这还不包括已为 Kubernetes 用户提供商业服务的 30 多家技术和服务合作伙伴。 

CNCF 最近宣布了Kubernetes 托管服务提供商 (KMSP) 计划,这是一个预先认证的服务提供商级别,他们拥有帮助企业成功采用 Kubernetes 的经验。为了进一步提升对 Kubernetes 的了解和认知,Linux 基金会与 CNCF 合作,将开发和运营 Kubernetes 培训和认证计划 -- 首门设计的课程是Kubernetes 基础知识

社区发展势头
在过去的三个月里,我们看到超过一百名新的贡献者加入了该项目,推送了大约 5,000 次提交,达到了新的里程碑,使核心项目的贡献者总数达到 1,000 多人,提交次数超过 40,000 次。这种惊人的势头之所以成为可能,是因为它拥有开放的设计、乐于接受新想法,以及赋予开放社区能够热情欢迎新的和资深的贡献者。非常感谢 1.5 版本的发布团队 -- Google 的 Saad Ali、Mirantis 的 Davanum Srinivas 和 CoreOS 的 Caleb Miles -- 他们为 1.5 版本的发布付出了努力。

在线下,可以在世界各地众多 Kubernetes 相关的 线下聚会 中找到社区成员。社区的活力和规模在西雅图 CloudNativeCon/KubeCon 拥挤的展厅中清晰可见(用户演讲的录像在此)。下一届 CloudNativeCon + KubeCon 将于 2017 年 3 月 29-30 日在柏林举行,请务必购买门票并在 12 月 16 日的 CFP 截止日期前提交您的演讲

准备好开始贡献了吗?在我们每周的社区会议上分享您的声音。 

感谢您的贡献和支持!