Kubernetes 1.10的新功能之一是beta集成了称为Container Storage Interface(CSI)的新存储功能。新的Kubernetes还提供传输层安全(TLS)引导功能以及针对重要安全漏洞的修补程序。

谷歌和Kubernetes存储特别兴趣小组(SIG)负责人Saad Ali表示,Kubernetes的功能通常作为alpha引入,在后来的Kubernetes发布中转变为beta并最终转为stable / GA。Kubernetes对CSI的支持作为alpha在1.9中引入,在1.10升级为beta——这意味着它的发展速度非常快。”


Ali指出,新功能通常至少需要三次发布才能从alpha变为stable。功能开发时间表允许Kubernetes开发人员获得反馈并迭代设计,最终目标是提供高质量的生产级功能。

支持CSI的目标是提供存储抽象层,这使得不同存储系统可以更轻松地插入到Kubernetes部署中。 Ali解释说,就最终用户而言,在CSI模式下,所有现有的存储卷插件将继续像现在这样运行。

“即使将一些入树卷插件迁移到树外CSI插件,在未来的发行版中,最终用户也无法看到这一更改,因为它不会更改用户使用的用于使用卷插件的API。”


Kubernetes 1.10更新中包含Kubelet TLS Bootstrap,旨在改进在Kubernetes节点(kubelet)上运行的数据的加密。TLS Bootstrap首次出现在2016年10月发布的1.4版本。

红帽公司Kubernetes首席工程师Derek Carr表示,这对于使用集群自动调节功能的集群非常有用,因为集群自动调节功能可以随着负载的增加或减少而让节点进出。

Carr表示,红帽希望在Kubernetes集群中节点主机管理方面实现更多功能的自动化,Kubelet TLS Bootstrap功能是这一过程中的关键一步,因为它简化了Red Hat OpenShift集群中新主机的自动添加。OpenShift是Red Hat的基于Kubernetes的容器管理平台。Carr补充说,在后续即将发布的Kubernetes版本中,TLS Bootstrapping有进一步的迭代改进。

“尤其是在用于与API服务器通信的客户端和服务器证书过期之前,kubelet能够自动轮换这些证书——这是特别令人兴奋的下一步。”Carr说。

Kubernetes 1.10还集成了针对CVE-2017-1002101安全漏洞的修复程序,该漏洞于3月12日首次公开发布。该漏洞可能允许从容器到主机文件系统的任意文件访问。

谷歌高级软件工程师、Kubernetes认证SIG负责人Tim Allclair表示,有关Kubernetes安全问题的更多细节将在未来的博客文章中发布。而“长期来看,我正在研究安全pod隔离背景下的新卷体系结构,以确保这些类型的问题不会暴露在该环境中。”

Carr补充说,Kubernetes社区还在考虑其他步骤,比如bug奖励计划,以吸引更多的安全研究人员查看代码,消除所有安全漏洞,并不断改进整个项目的安全状况。

“发现只是解决问题的一部分,还需要补救。Kubernetes受益于庞大的贡献者群体,红帽能够分配时间和资源帮助社区为CVEs提供更快的补救。我们都有共同的目标,可以一起使Kubernetes尽可能安全。”Carr说。


决定


Kubernetes v1.10更新了这些 运维和开发笑了_java

开发运维怎么看

Kubernetes v1.10更新了这些 运维和开发笑了_java_02



1.10版本中的大部分工作对于集群运维人员来说更重要。许多变化是错误修复和内部重构,目的是稳定Kubernetes核心并提高其他组件的发布速度。


运维视角

此版本为Windows上的Kubernetes带来了功能奇偶校验和修复,并且还修复了一些关键的API。

Windows节点现在支持FlexVolume插件。FlexVolume卷类型允许你使用自定义存储驱动程序。另外,可以独立于集群生命周期来管理驱动程序生命周期;无需停止并启动kubelets或kube-controller-manager来升级驱动程序。


v1.8中引入的kubelet config API从alpha变为beta。在此API之前,kubelets不得不重新配置带外,但现在可以使用ConfigMaps进行配置。一个类似的kube-proxy API也正在从alpha到beta。Audit API已经GA。你可以使用此API为所有API请求生成审计日志,并将它们导出到可插入后端。


添加了一个新的“shutdown” taint  Node。如果你的集群与使用云提供商的云集成,你可能已经注意到Kubernetes不会从报告NotReady的节点上卸载存储卷。pod被重新调度到另一个节点,但不能在那里使用它们的存储卷。这是因为云提供商不知道从报告NotReady的节点卸载存储卷是否安全。一旦你的云提供商支持这个新的taint,将使用它来确定何时卸载(和重新挂载)存储卷是安全的。

你可以配置API服务器以使用自定义TLS密码套件。默认密码套件旨在平衡安全性和兼容性。如果你更愿意接受较低的可用性而不是一些安全性较低的密码,那么可以通过定义自己的密码套件来实现。

最后,让我们看看“Action Required”项。这些更改包含在每个版本的更改日志中,可能会与你的集群后向不兼容。到目前为止,在这个版本中,kubelet“-cloud-provider = auto-detect”功能被删除,webhooks不再跳过集群范围的资源。如果你尚未部署云控制器管理器组件,则应该尽快完成。为了将云提供商实施与Kubernetes代码去耦,它们将在新版本中从kube-controller-manager迁移到cloud-controller-manager,并最终移植到各个二进制文件中。


开发视角

开发人员会发现一些小的但受欢迎的改进,包括ConfigMap中对二进制数据的支持,即“kubectl set volume”命令。没有主要功能,也没有重大变化。


使用kubectl命令将卷添加到部署或将其移除到部署:“kubectl set volume”。“kubectl set”命令更新部署,从而触发滚动更新。过去的版本增加了对更新镜像、选择器、服务帐户、环境和资源配额的支持。未来版本将支持更新活跃性和准备就绪探测器、安全上下文和端口。 

你现在可以在ConfigMap中使用存储二进制数据。以前,如果你想将Java密钥库(二进制文件)传递到应用程序,需要实现自己的Base64编码/解码。现在,这种编码/解码内置于其中,易于使用:“kubectl create configmap -from-file”。

v1.10对Kubernetes的企业生产就绪意味着什么?


新版本将通过以下方式提高生产就绪度:

Node "Shutdown" Taint提高了有状态工作负载的整体可靠性,减少了关闭卷后卡住卷的可能性。


安全


API Audit Logging功能的毕业代表了Kubernetes可观察性的成熟,从而提高了生产中故障排除和审计的能力 


 “自定义密码套件”功能使得安全配置更加灵活


ConfigMap中的二进制数据支持提高了Kubernetes与生产型企业环境中普遍存在的Java的兼容性。


由于对kubeadm工具的渐进式改进,运维更加简单。该工具提供了一种易于使用的CLI来部署和管理集群生命周期。例如:56084是实现kubeadm部署多主机(HA)集群的一个步骤,58259提高了Kubernetes与更多外部云提供商的兼容性。