即将发布的 Kubernetes 1.13 有哪些新功能?

阅读数:2018 2018 年 12 月 3 日

Kubernetes 配置管理

动态审计配置(alpha)

https://github.com/kubernetes/enhancements/issues/600

Kubernetes 审计配置功能允许使用 webhook 将审计事件转发到远程 API。 从 Kubernetes 1.13 版本开始,用户可以设置动态审计后端,以支持在运行时推送 AuditSink API 对象(远程端点)。可以使用 Falco 检查 Kubernetes 审核事件。

支持自定义资源的 webhook 转换(alpha)

https://github.com/kubernetes/enhancements/issues/598

在版本 1.13 之前,可为 Resource Custome Define(RCD) 定义多个版本,只要所有版本使用相同的模式(即,如果添加了新字段,则需要在所有版本中添加)。 现在,不同的 CRD 版本可以有不同的模式,可以定义转换 webhook 来处理更新。

API 服务器 dry-run(alpha 到 beta)

https://github.com/kubernetes/enhancements/issues/576

dry-run 模式可以模拟真实的 API 请求,在不修改实际状态的情况下查看请求是否成功(准入控制器链,验证,合并冲突…),或者会发生什么。请求响应的主体应尽可能接近非 dry-run 模式。此模式的核心功能是启用其他用户级功能,如kubectl diff子命令。

kubectl diff命令(alpha 到 beta)

https://github.com/kubernetes/enhancements/issues/491

使用 kubectl diff 命令可以预览 kubectl apply`命令对群集所做的变更。 这个命令的功能在于方便查看,这为集群的 operator 的日常工作提供了很方便的操作。需要的是注意,该命令要在 API 服务器上启用 dry-run 功能时才能生效。

简化 Kubernetes 集群创建(beta 到稳定)

https://github.com/kubernetes/enhancements/issues/11

此功能涵盖了kubeadm的总体用例,并简化了 Kubernetes 集群的创建流程。该功能不是 Kubernetes 1.13 版本独有的,但是在此版本中将有一些文档上的改进,改进的地方包括kubeadm init使用中的不同阶段,kubeadm alpha的新子命令或者是在部署示例中包含的 CoreDNS 等。

Kubernetes 核心组件

基于 taint 的驱逐 (alpha 到 beta)

https://github.com/kubernetes/enhancements/issues/166

基于 taint 的驱逐在 Kubernetes 1.13 中将从α状态转变为β状态。 当启用此功能时(在 -feature-gates 中,设置 TaintBasedEvictions = true,),NodeController(或 kubelet)会自动添加 taint,并且禁用基于 Ready NodeCondition 从 Node 中驱逐 pod 的前一逻辑。

配置调度器对集群节点的子集进行评分(alpha 到 beta)

https://github.com/kubernetes/enhancements/issues/593

在 Kubernetes 1.12 之前,kube-scheduler 需要检查集群中所有节点的可行性,然后对可行节点进行评分,选择评分最高的节点来运行 pod。现在,可以对 Kubernetes 调度器进行配置,仅考虑一定百分比的节点,只要在配置的集合中能找到足够的可行节点即可。 这提高了调度器在大规模集群中的性能。

更新 kubectl 的插件机制(alpha 到 beta)

https://github.com/kubernetes/enhancements/issues/579

kubectl支持扩展添加新的子命令或覆盖现有的子命令,支持kubectl主要发行版中未包含的新功能和自定义功能。此存储库提供了一个很好的扩展示例。

将频繁的 Kubelet 心跳移至 Lease API(alpha)

https://github.com/kubernetes/enhancements/issues/589

在 1.13 之前的 Kubernetes 版本中,NodeStatus 是 Node 的心跳。 此版本引入了节点租约 (node-lease),这是一种更轻量,可扩展性更好的心跳指示器。节点租约经常更新,而 NodeStatus 仅在出现变更或一定时间段以后才从节点报告到主节点。

硬件支持

支持第三方设备监控插件(alpha)

https://github.com/kubernetes/enhancements/issues/606

为了监控设备插件提供的资源,监控代理需要能够发现节点上正在使用的设备集,并获取元数据以描述该指标应该与哪个容器相关联。 kubelet 现在提供 gRPC 服务(PodResources)来启用此功能。 对“PodResources 服务”的支持仍处于 alpha 状态。

存储

通过持久化卷源使用原始块设备(alpha 到 beta)

https://github.com/kubernetes/enhancements/issues/351

默认情况下,在 Kubernetes 1.13 上启用 BlockVolume,只需将 volumeMode 的值设置为 block 即可访问原始块设备。在没有文件系统抽象的情况下使用原始块设备可允许 Kubernetes 为需要高 I / O 性能和低延迟的高性能应用程序(如数据库)提供更好的支持。

为 FlexVolume 添加调整大小的调用支持,以支持类似 LVM 扩展的卷大小调整(alpha)

https://github.com/kubernetes/enhancements/issues/304

PVC 大小调整最初是在 Kubernetes 1.8 中引入的。 此后,一些卷插件已经能支持此功能。1.13 版本能支持 FlexVolumes。如果你正在使用 FlexVolume 并且底层驱动程序支持该操作,现在只需更新 Kubernetes 中的 PVC 即可扩展 PV。

添加对 Kubernetes 树外 CSI 卷插件的支持(beta 到稳定版)

https://github.com/kubernetes/enhancements/issues/178

容器存储接口 (Container Storage Interface)是将任意存储系统暴露给 Kubernetes 容器化工作负载的规范。目前,Kubernetes 卷插件在树内,这意味着它们与核心 Kubernetes 二进制文件进行链接,编译,构建和一起发布。在 1.13 版本中,该功能已经稳定,并允许第三方供应商创建和分发(Kubernetes 树外)CSI 卷插件。

使调度器能感知 pod 内卷的拓扑约束(beta 到稳定)

https://github.com/kubernetes/enhancements/issues/490

此功能允许设置控制卷的调度位置,可以启用本地卷绑定,还可用于将卷与特定拓扑区域耦合。该功能在之前的 Kubernetes 版本中有所体现,但在 1.13 版本中已逐渐稳定。

Kubernetes 与云端集成

AWS ALB ingress 控制器(alpha)

https://github.com/kubernetes/enhancements/issues/629

这是一项备受欢迎的功能,只要为集群配置了 AWS 集成凭证,就可以通过按需配置 AWS ALB 来满足 Kubernetes ingress 资源。

亚马逊弹性块存储 CSI 驱动程序(alpha)

https://github.com/kubernetes/enhancements/issues/630

亚马逊弹性块存储(Amazon Elastic Block Store) CSI 驱动提供 CSI 接口来管理 EBS 卷的生命周期。驱动程序仍处于 alpha 状态,1.12 之前的版本不支持该功能。 可以使用的基本卷操作包括:CreateVolume / DeleteVolume,ControllerPublishVolume / ControllerUnpublishVolume,NodeStageVolume / NodeUnstageVolume,NodePublishVolume / NodeUnpublishVolume 和 Volume Scheduling。

外部 AWS CCM(alpha)

https://github.com/kubernetes/enhancements/issues/631

cloud-controller-manager (云控制器管理器,CCM)是嵌入云控制循环的守护进程。云供应商和 Kubernetes 的开发和发布速度不同,将特定于云供应商的代码抽象为云控制器管理器二进制文件能够让云供应商独立发展。AWS 云控制器管理器在 Kubernetes 1.13 版本中首次亮相。

Azure 可用区(alpha 到 beta)

https://github.com/kubernetes/enhancements/issues/586

Kubernetes 1.12 版本增加了对 Azure 可用区(AZ)的支持。 可用区中的节点可通过failure-domain.beta.kubernetes.io/zone=<region> - <AZ>标签添加,并为 Azure 托管的磁盘存储类添加拓扑感知配置。此版本中对 Azure 可用区的支持已经从 alpha 阶段到了 beta 阶段。

支持 Azure 跨资源组节点(alpha 到 beta)

https://github.com/kubernetes/enhancements/issues/604

Kubernetes 1.12 版本增加了对 Azure 序中的跨资源组(resource group)节点和非托管(例如本地)节点的支持。该版本中对跨越资源组节点的支持已经从 alpha 阶段到了 beta 阶段。

弃用

删除对 etcd2 的支持

https://github.com/kubernetes/enhancements/issues/622

此版本中删除了所有对 etcd2 的文档引用和支持。

参考链接:

https://sysdig.com/blog/whats-new-in-kubernetes-1-13/

收藏

评论

微博

发表评论

注册/登录 InfoQ 发表评论