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

Kubernetes 1.5:支持生产工作负载

今天,我们宣布 Kubernetes 1.5 发布。此版本紧随 KubeCon/CloundNativeCon 之后,用户聚集在一起分享他们在 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 上创建缩放删除修复。您可以使用 StatefulSet 来简化任何有状态服务的部署,并且在存储库中提供了教程示例。为了确保永远不会有两个具有相同身份的 Pod,Kubernetes 节点控制器不再强制删除无响应节点上的 Pod。相反,它会等待,直到以几种方式之一确认旧 Pod 已死:当 kubelet 报告并确认旧 Pod 已终止时自动确认;当集群管理员删除节点时自动确认;或者当数据库管理员确认通过强制删除旧 Pod 安全进行时确认。如果用户尝试通过 CLI 强制删除 Pod,现在会收到警告。对于将从 PetSet 迁移到 StatefulSet 的用户,请遵循升级指南

PodDisruptionBudget beta 是一个 API 对象,它指定必须始终保持运行的 Pod 集合的最小数量或最小百分比的副本。借助 PodDisruptionBudget,应用程序部署者可以确保自愿驱逐 Pod 的集群操作永远不会同时关闭太多,从而导致数据丢失、中断或不可接受的服务降级。在 Kubernetes 1.5 中,“kubectl drain”命令支持 PodDisruptionBudget,允许安全地排空节点以进行维护活动,并且它很快也将被节点升级和集群自动缩放器(在删除节点时)使用。这对于基于仲裁的应用程序非常有用,可以确保正在运行的副本数量永远不会低于仲裁所需的数量,或者对于 Web 前端,确保提供负载的副本数量永远不会低于某个百分比。

Kubefed alpha 是一个新的命令行工具,可帮助您管理联合集群,从而可以轻松地部署新的联合控制平面,以及在现有联合中添加或删除集群。集群联合中的另一个新功能是将 ConfigMaps alpha 和 DaemonSets alpha 以及 deployment alpha 添加到 联合 API,允许您从单个端点在多个集群中创建、更新和删除这些对象。

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

Windows 服务器容器 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。
  • 沃尔玛 -- 将使用 Kubernetes 与 OneOps 来管理其庞大的配送中心,以帮助其团队提高交付速度、系统正常运行时间和资产利用率。
  • Monzo -- 这是一家欧洲的初创公司,正在构建一家移动优先银行,它正在使用 Kubernetes 来为其核心平台提供动力,该平台可以处理极高的性能和一致性要求。

Kubernetes 生态系统
Kubernetes 生态系统正在迅速发展,包括 Microsoft 在 Azure Container Service 中对 Kubernetes 的支持、VMware 将 Kubernetes 集成到其 Photon 平台中以及 Canonical 对 Kubernetes 的商业支持。此外,还有三十多家已经为 Kubernetes 用户提供商业服务的技术与服务合作伙伴

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

社区发展速度
在过去的三个月中,我们看到一百多位新的贡献者加入了该项目,并提交了约 5,000 次提交,核心项目贡献者总数达到 1000 多位,提交总数超过 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 日之前在征集演讲截止日期前提交您的演讲

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

感谢您的贡献和支持!