Share with friends and colleagues on social media

作者:Sascha Grunert

下一个Kubernetes版本即将发布,大家都想知道新版本中会有何新功能。本文将为您揭晓部分激动人心的新功能。

概览更新

Kubernetes是当今最大的开源软件项目之一,以下数据可提供更直观的感受:截至目前,v1.18.0已包含高达3412批提交信息(commit),比上一个版本略有增加(v1.17.0中这一数据为3289),总体维持在新Kubernetes版本发布的平均值左右。其中只有大约10%的commit涉及实际的面向用户的变更,即意味着用户最终要阅读337个发行说明条目,大约可占满35页A4纸!Kubernetes SIG Release(Kubernetes发布特别兴趣小组)确保这些发行说明是高质量的,每个小版本的发行说明均经手工修改。

手工修改的发行说明来源于Kubernetes发行说明生成器,其收集的数据范围覆盖之前的候选小版本v1.17.0-rc.1到最新的v1.18系列版本。这些生成的发行说明当前发布在SIG Release GitHub存储库(GitHub repository of SIG Release)中。SIG Release的发行经理(Release Managers)将于3月24日确定v1.18.0版本,而krel(Kubernetes发行工具箱)将会把这些说明纳入官方Kubernetes GitHub存储库

面对如此巨大的变化,我们如何才能概览版本的更新之处呢?对数据科学家来说,在自然语言处理过程中找到此类数据集的“词袋”是一种常见的做法。基于目前可用的发行说明,我践行了这一做法。如果我们在“词云”中打开“词袋”,便可一览Kubernetes v1.18.0的真容:

这是一个有趣的开始!可见弃用、度量、节点和kubectl的变更似乎是该版本的主题。让我们以kubectl为例,进行近距离观察。

kubectl

值得一提的一个特性是,kubectl现已包含一个kubectl alpha调试命令,允许将一个临时容器附加到一个正在运行的Pod(Pod是kubernetes中可以创建和部署的最小单位)中,以便进行调试(#88004)。

对kubectl还做了其他较小的更改。例如,当使用带有- force旗标的kubectl删除对象时,便无需再指定–grace-period=0(#87776

kubectl- dry-run旗标现接受客户端赋值、服务器赋值和无赋值。这允许我们支持客户端和服务器端的模拟运行策略。kubectl对服务器端模拟运行的支持已经扩展到应用、补丁和创建等命令(#87580#87714#88292)。

 存储增强

Secret值和ConfigMap值现可标记为不可变。若其设置为true(真),则更改数值资源的操作将被拒绝。但无论如何,仍有可能删除这些对象(#86377)。

Kubernetes引入了一个新的FsGroupChangePolicy字段,允许用户为Pods指定fsGroup权限更改策略。例如,如果根级别的文件系统与预期的fsGroup不匹配,则仅允许更改存储挂载上的文件权限(#88488)。

 Horizontal Pod Autoscaler(HPA)API

Kubernetes添加了一个HPA API,允许用户扩展配置HPA的行为。可以分别指定不同的行为来放大和缩小。除此之外,在每个缩放方向上,可以指定一个稳定窗口和一个策略列表,以及如何从其中选择。这些策略可以限制添加或删除的Pod的绝对数量,或者添加或删除的Pod的百分比。例如,此等行为定义可如下所示:

behavior:
scaleUp:
policies:
– type: Percent
value: 100
periodSeconds: 10
scaleDown:
policies:
– type: Pods
value: 2
periodSeconds: 30

This means pods can be scaled up every 10 seconds and scaled down to 2 pods every 30 seconds. (#74525).

这意味着Pods可以每10秒放大一次,每30秒缩小至2个。(#74525)。

调度配置文件

Kubernetes已经能够运行多个调度器(Schedulers),这在大规模调试调度场景下会大大增加复杂性。为了解决这个问题,社区引入了调度器配置文件(Scheduler Profiles),它可以应用于一个单一的调度器。这意味着集群操作员现在可以为不同的pod集提供不同的调度行为(#88087)。

 大内存页

Kubernetes支持Pod中的应用程序分配和使用预先分配的大内存页。该功能本已普遍可用,但如今能够支持容器级别的多种大小的大内存页(#84051)。除此之外,大内存页的统计信息现已添加至kubectl描述节点的已分配资源中(#80605)。现在还可以支持一种以上大小的预分配大页面(#82820)。

API弃用

了解Kubernetes中API弃用的最新情况非常有必要,以确保应用程序部署的工作方式与Kubernetes升级之前相同。例如,v1.18.0中的一些弃用将如下所示:

Kubernetes API服务器将不再支持apps/v1beta1、extensions/v1beta1、daemonsets、replicasets等弃用的APIs及其它资源(#85903)。

Kubelet资源度量端点/metrics/resource/v1alpha1以及该端点下的所有度量均已弃用(#86282)。

kubectl run的所有生成器均被移除,现只能创建pods。此外,所有不再相关的旗标也已被弃用(#87077)。

结论

如上所介绍的内容并未涵盖所有值得一提的新变化,但足以支撑我对Kubernetes v1.18.0.的概要介绍了。如果您还意犹未尽,想了解更多细节,我推荐您访问官方Kubernetes发行说明网站或者浏览更改日志文件,新版本发布后,上述网页会包含所有相关细节。

Share with friends and colleagues on social media
(Visited 1 times, 1 visits today)

Category: Cloud and as a Service Solutions, Containers, Containers as a Service, Kubernetes, SUSE CaaS Platform
This entry was posted 星期五, 10 四月, 2020 at 2:00 上午
You can follow any responses to this entry via RSS.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

No comments yet