Kubernetes 1.17带来卷快照和更简易的插件管理
版本1.17是2019年的第四个也是最终版本,含有22处改进。这些功能上的改进包括:
- 14处改进进入到stable阶段。
- 4处改进进入到beta阶段。
- 4处改进进入到alpha阶段。
不妨看一下Kubernetes的这个最新版本含有的一些新改进。
先看一下其中一项比较重要的功能。
卷快照
虽然卷快照尚未进入到stable阶段,但它是许多Kubernetes管理员非常欣赏的一项功能。该功能创建持久卷的时间点副本。这些快照可用于配置新卷或将现有卷还原到以前的状态。
但是考虑到Kubernetes已含有一个卷插件(该插件为块存储和文件存储的自动化及配置、附加和挂载提供了一种功能强大的工具),为什么还要为它添加卷快照?为了回答这个问题,Kubernetes官方文档特别指出:
所有这些功能的基础是Kubernetes实现工作负载可移植性的目标:Kubernetes旨在在分布式系统应用程序和底层集群之间创建一个抽象层,以便应用程序可以做到与它们运行所依赖的集群的具体情况无关,应用程序部署不需要“针对特定集群的”知识。
快照操作被视为有状态工作负载的一项关键功能。通过提供在Kubernetes API内触发快照操作的方法,管理员现在可以在不必使用Kubernetes API的情况下处理用例。
想了解有关Kubernetes卷快照功能的更多信息,请参阅官方文档。
树内插件迁移
从版本1.17开始,Kubernetes将把树内插件迁移到容器存储接口(CSI)。为什么这样?在1.17之前,Kubernetes卷插件是核心Kubernetes代码的一部分,随核心Kubernetes二进制文件一并提供。因此,为Kubernetes添加新的卷插件始终很困难。如果供应商想为核心添加存储系统,就被迫与Kubernetes发布过程保持一致。这并非总是可行的。
除此之外,第三方存储代码可能会导致核心Kubernetes二进制文件内出现可靠性和安全性问题。
这导致将树内插件迁移到CSI。Kubernetes开发人员提到这种迁移时说:“当Kubernetes集群管理员更新集群以启用CSI迁移时,现有的有状态部署和工作负载将继续像往常一样运行;不过在幕后,Kubernetes将所有存储管理操作(以前针对树内驱动程序)的控制权交给CSI驱动程序。”
其他功能
Kubernetes 1.17的其他功能包括如下:
- 按条件为节点设置污点:表示使用污点(taint)阻止调度的节点条件。
- 可配置的Pod进程命名空间:用户可以通过在PodSpec中设置一个选项,配置Pod中的容器以共享通用的PID名称空间。
- 动态最大卷计数:增添了对每个节点最大卷的动态和通用机制的支持。
- 在SubPath挂载中提供了环境变量扩展。
- 支持自定义资源的默认设置。
- 将频繁的Kubelet Heartbeat移到Lease Api:Kubelet在节点上创建并定期续订Lease,节点生命周期控制器将该租约视为运行状况信号。
- 支持watch bookmark,以减轻kube-apiserver的负载。
- 行为驱动的一致性测试:一致性行为预先定义,与验证那些行为的测试分开。
- 服务的终结器保护:添加终结器保护以确保在删除相关的LB之前,不完全删除服务资源。
- 避免为每个watcher独立地序列化同一对象。
- IPv4 / IPv6双栈支持。
- 可感知拓扑结构的服务路由。
- 面向Windows的RunAsUserName。