乐趣区

Kubernetes-115可扩展性和持续改进

作者:1.15 发布团队

我们很高兴地宣布交付 Kubernetes 1.15,这是我们 2019 年的第二个版本!Kubernetes 1.15 包含 25 个增强:2 个升级为稳定,13 个升级为 beta,10 个升级为 alpha。这次发布的主题是:

  • 持续改进

    • 项目的可持续性不仅仅是功能。许多 SIG 一直致力于提高测试覆盖率,确保基本功能保持可靠,确保核心功能集的稳定性,并致力于成熟现有功能和清理积压。
  • 可扩展性

    • 社区一直要求继续支持可扩展性,因此这个周期围绕 CRD 和 API Machinery 进行更多的工作。这个周期中的大多数增强来自 SIG API Machinery 和相关领域。

让我们深入了解这个版本的主要特性:

围绕核心 Kubernetes API 的可扩展性

围绕 customresourcedefinition 的新开发的主题是数据一致性和原生行为。用户不应该注意交互是与 CustomResource 还是与 Golang-native 资源进行的。随着大的步骤,我们在未来的版本之一正在努力向一个 GA 版本的 CRD 和 GA 的准入 webhook。

在这个方向上,我们重新考虑了 CRD 中基于 OpenAPI 的验证模式,从 1.15 开始,我们根据“结构模式(structural schema)”的限制检查每个模式。这基本上强制了 CustomResource 中每个字段的非多态(non-polymorphic)和完整类型(complete typing)。将来我们将需要结构模式,特别是对于所有新特性,包括下面列出的特性,以及列出非结构(NonStructural)条件下的违规行为。在 v1beta1 API 组中,非结构模式(non-structural schema)仍然保持工作状态。但是任何严肃的 CRD 应用程序都应该在可预见的将来迁移到结构模式。

关于什么使模式结构化的详细信息将在 kubernetes.io 的博客文章中在本周晚些时候发布,当然 Kubernetes 的文档中对此有记录。

beta: CustomResourceDefinition Webhook Conversion
customresourcedefinition 自 1.14 起作为 beta 支持多个版本。使用 Kubernetes 1.15,它们能够实时地在不同版本之间进行转换,就像用户长期习惯于从原生资源进行转换一样。CRD 的转换是通过 webhook 实现的,由集群管理员部署在集群内部。这一特性已在 Kubernetes 1.15 中升级到 beta,将 CRD 提升到一个全新的水平,用于真正的 CRD 应用程序。

beta: CustomResourceDefinition OpenAPI Publishing
kube-apiserver 在 /openapi/v2 上为原生类型提供 OpenAPI 规范已经有很长一段时间了,它们被许多组件使用,尤其是 kubectl 客户端验证、kubectl explain 和基于 OpenAPI 的客户端生成器。

用于 CRD 的 OpenAPI 发布将在 Kubernetes 1.15 作为 beta 提供,同样只适用于结构模式。

beta: CustomResourceDefinitions Pruning
修剪(Pruning)是自动删除发送到 Kubernetes API 的对象中的未知字段。如果未在 OpenAPI 验证模式中指定字段,则该字段是未知的。这是一个数据一致性和安全性相关的特性。它强制只将 CRD 开发者指定的数据结构持久化到 etcd。这是原生资源的行为,也将用于 CRD,从 Kubernetes 1.15 的 beta 版开始。

修剪是通过 CustomResourceDefinition 中的 spec.preserveUnknownFields: false 激活。将来的 apiextensions.k8s.io/v1 CRD 变种将强制执行修剪(可能但明确必要的选择退出)。

修剪要求 CRD 开发者为 CRD 的所有版本提供完整的、结构化的验证模式,要么是顶层的,要么是所有版本的。

alpha: CustomResourceDefinition Defaulting
customresourcedefinition 获得默认支持。默认值是使用 OpenAPI 验证模式中的 default 关键字指定的。在发送到 API 的对象中以及从 etcd 读取时,为未指定字段设置默认值。

default 在 Kubernetes 1.15 中将作为 alpha 提供,用于结构模式。

beta: Admission Webhook Reinvocation & Improvements
对于扩展 Kubernetes API 的项目来说,变异(mutating)和验证(validating)准入(admission)webhook 变得越来越主流。到目前为止,按照字母顺序,只调用了一次变异 webhook。早期运行的 webhook 不能对链中稍后调用的 webhook 的输出作出反应。随着 Kubernetes 1.15 的发布,情况将发生变化:

通过指定 reinvocationPolicy: ifNeeded,变异 webhook 可以选择至少一次重新调用。如果后面的变异 webhook 修改了对象,那么前面的 webhook 将得到第二次机会。

这要求 webhook 具有类似幂等(idempotent)的行为,可以处理第二次调用。

不打算添加另一轮调用,这样 webhook 的作者仍然必须小心对他们实现的已被承认的对象的更改。最后,调用验证 webhook 来验证所承诺的不变量是否已实现。

对准入 webhook 有更多更小的更改,特别是 objectSelector,它将具有特定标签的对象排除在准入之外,以及 webhook 服务器的任意端口(不仅仅是 443)。

集群生命周期的稳定性和可用性的改进

使 Kubernetes 的安装、升级和配置更加健壮是 SIG Cluster Lifecycle 在这个周期的主要关注点(请参阅我们的社区近况)。跨裸金属工具的 Bug 修复和生产就绪的用户场景(如高可用性用例)在 1.15 中获得优先级。

集群生命周期构建块 kubeadm 继续接收高效引导生产集群所需的特性和稳定性工作。kubeadm 将高可用性(high availability,HA)功能提升到了 beta,允许用户使用熟悉的 kubeadm init 和 kubeadm join 命令来配置和部署 HA 控制平面。已经专门创建了一个全新的测试套件,以确保这些特性在一段时间内保持稳定。

证书管理在 1.15 中变得更加健壮,kubeadm 现在可以在证书到期之前无缝地旋转所有证书(在升级时)。有关如何管理证书的信息,请参阅 kubeadm 文档。

在 1.15 中,kubeadm 配置文件 API 从 v1beta1 迁移到 v1beta2。

最后,让我们庆祝 kubeadm 现在有了自己的徽标!

持续改善的 CSI

在 Kubernetes v1.15 中,SIG Storage 继续工作,以支持将树内卷插件迁移到 CSI(Container Storage Interface,容器存储接口)。SIG Storage 致力于使 CSI 具有与树内功能相同的特性,包括调整大小、内联卷等功能。SIG Storage 在 CSI 中引入了一些新的 alpha 功能,这些功能在 Kubernetes 存储子系统中还不存在,比如卷克隆(volume cloning)。

卷克隆允许用户在提供新卷时将另一个 PVC 指定为“数据源(DataSource)”。如果底层存储系统支持此功能并在其 CSI 驱动程序中实现“CLONE_VOLUME”功能,则新卷将成为源卷的克隆。

其他值得注意的功能更新

  • 在 Kubernetes Core 中支持 go 模块
  • 继续准备云提供商的提取和代码组织。云提供商代码已被转移到 kubernetes/legacy-cloud-providers,以便稍后更容易删除和外部使用。
  • Kubectl get 和 describe 现在可以使用扩展
  • 节点现在支持第三方监控插件。
  • 调度插件有一个新的 Alpha 调度框架
  • ExecutionHook API 用于在容器中触发不同用例的 hook 命令,现在是 Alpha。
  • 继续弃用 extensions/v1beta1、apps/v1beta1 和 apps/v1beta2 api;这些扩展将在 1.16 中退役!

查看发布说明以获得完整的值得注意的特性和修复列表。

如何获得

Kubernetes 1.15 可以在 GitHub 上下载。要开始学习 Kubernetes,请查看这些交互式教程。你还可以使用 kubeadm 轻松地安装 1.15。

特性的博客系列

如果你有兴趣更深入地研究这些特性,请查看本周和下周的 Kubernetes 系列文章,其中我们将重点介绍以下特性的详细演练:

  • CRD 的未来:结构模式
  • 介绍用于 Kubernetes 的卷克隆 Alpha
  • Kubeadm 自动化高可用性

发布团队

通过数百名提供技术和非技术内容的个人的努力,该版本得以发布。特别感谢 Pivotal Software 高级技术项目经理 Claire Laurence 带领的发布团队。发布团队中的 38 个人协调了发布的许多方面,从文档到测试、验证和特性完整性。

随着 Kubernetes 社区的发展,我们的发布过程展示了开源软件开发中的协作。Kubernetes 继续快速获得新用户。这种增长创造了一个积极的反馈循环,在这个循环中,更多的贡献者提交代码,创建一个更加活跃的生态系统。迄今为止,Kubernetes 已有超过 3.2 万名个人贡献者,活跃的社区有超过 6.6 万人。

项目的开发速度

CNCF 继续改进 DevStats,这是一个雄心勃勃的项目,旨在可视化项目中所包含的大量贡献。K8s DevStats 演示了来自主要公司贡献者的贡献的分解,以及一组令人印象深刻的预配置报告,其中包括从单个贡献者到拉请求生命周期时间的所有内容。过去一年,平均每月有 379 家不同的公司和 2715 多名个人向 Kubernetes 捐款。查看 DevStats 了解更多关于 Kubernetes 项目和社区的总体速度。

用户案例

全球性组织正在大规模地使用 Kubernetes 进行生产。最近公布的用户故事包括:

  • 中国联通利用 Kubernetes 提高其资源利用率 20-50%,降低 IT 基础设施成本,并将部署时间从小时减少到 10-15 分钟。
  • 蒙特利尔市使用 Kubernetes 将部署时间从几个月减少到几个小时,并在 8 台机器上运行 200 个应用程序组件,其中 5 人操作 Kubernetes 集群。
  • SLAMTEC 使用 Kubernetes 和其他 CNCF 项目,实现 18 个月以上的 100%正常运行时间,节省 50%的故障排除和调试时间,并节省 30%的 CI/CD 工作时间。
  • ThredUP 使关键服务的部署时间平均减少了约 50%,并将部署的准备时间缩短到了 20 分钟以下。

Kubernetes 在帮助你的团队吗?与社区分享你的故事。

生态系统近况

  • Kubernetes 最近在 KubeCon + CloudNativeCon 巴塞罗那庆祝了成立 5 周年
  • Kubernetes 认证管理员(CKA)考试已经成为迄今为止最流行的 Linux 基金会认证之一,有超过 9,000 名注册用户和 1700 多人通过并获得了认证。
  • 在成功举办的 2019 年的 KubeCon + CloudNativeCon 欧洲峰会,CNCF 宣布拥有 400 多名成员,年增长率为 130%。

KubeCon

世界上最大的 Kubernetes 聚会,KubeCon + CloudNativeCon 将于 2019 年 6 月 24 日至 26 日在上海(与开源峰会 Open Source Summit 共同举办)举行,11 月 18 日至 21 日在圣地亚哥举行。这些会议将包括技术会议、案例研究、开发者深度开发、沙龙等等!今天注册!

网络研讨会

在 7 月 23 日上午 10 点(PDT 时区)加入 Kubernetes 1.15 发布团队的研讨会,了解这个版本的主要特性。在这里注册。
https://zoom.us/webinar/regis…

如何参与

参与 Kubernetes 的最简单方法是加入与你的兴趣一致的许多 SIG(Special Interest Groups,特殊兴趣小组)之一。你有什么想向 Kubernetes 社区广播的吗?在我们每周的社区会议上分享你的声音,并通过下面的渠道。感谢你不断的反馈和支持。

  • 关注我们的 Twitter @Kubernetesio 获取最新消息
  • 加入社区讨论 Discuss
  • 在 Slack 上加入社区
  • 在 Stack Overflow 上发布问题(或回答问题)
  • 分享你的 Kubernetes 故事

KubeCon + CloudNativeCon + Open Source Summit

大会日期:2019 年 6 月 24 至 26 日

活动邀请:门票有限,尽快报名

添加同场活动

Alibaba Cloud Hands-on lab:Kubernetes 动手实践课
AWS 容器服务技术开放日
Apache ServiceComb Meetup 中国峰会
中国原创 CNCF 项目社区沙龙
Cloud Native Elite
持续交付峰会
DPDK2019 中国峰会
Kubernetes 贡献者峰会
Huawei – Huawei LiteOS,丰富的端云协同能力
开放数据自主管理迷你峰会
开放异构计算框架介绍
Serverless Is More & Cloud Native Meetup
Serverless Is More Hands-on Workshop
SOFAStack 云原生工作坊

购票注册

  • 标准注册:2400 人民币
  • 贵宾注册:6000 人民币
  • 个人或学术注册(仅邀请):600 人民币(需要发送电子邮件至 events@cncf.io 申请。请以英文书写,主题说明参加本次中国大会,内容说明申请个人注册,还是学术注册。申请获批准将收到邀请码。)

关于 CNCF

CNCF (Cloud Native Computing Foundation)成立于 2015 年 12 月,隶属于 Linux Foundation,是非营利性组织。CNCF(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。

退出移动版