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

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,允许您从单个端点跨多个集群创建、更新和删除这些对象。

HA Masters Alpha 提供了使用 kube-up/kube-down 脚本在 GCE 上创建和删除具有高可用性(复制)主节点的集群的能力。允许设置区域分布式 HA 主节点,每个区域至少一个 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。 
  • 沃尔玛 —— 将使用 Kubernetes 和 OneOps 来管理其令人难以置信的配送中心,帮助其团队提高交付速度、系统正常运行时间和资产利用率。  
  • Monzo —— 一家欧洲初创公司,正在构建一家移动优先银行,它正在使用 Kubernetes 来为其核心平台提供动力,该平台能够处理极端的性能和一致性要求。

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

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 日在柏林举行,请务必在 CFP 截止日期 12 月 16 日之前购买门票并提交您的演讲

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

感谢您的贡献和支持!