Kubernetes v1.18.0有何新功能
下一个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发行说明网站或者浏览更改日志文件,新版本发布后,上述网页会包含所有相关细节。
No comments yet