Kubernetes 1.16发布:自定义资源、大幅调整的指标以及存储卷扩展

Kubernetes 1.16发布:自定义资源、大幅调整的指标以及存储卷扩展_第1张图片

当地时间9月18日,Kubernetes 1.16正式发布,这也是2019年之内推出的第三个版本!Kubernetes 1.16包含31项增强功能,其中8项增强功能已经可以稳定运行,另有8项增强功能处于beta测试阶段,15项处于alpha测试阶段。

核心主题

640?wx_fmt=png

自定义资源

CRD一直被作为Kubernetes的可扩展机制得到广泛使用,但自1.7版本发布以来就一直处于beta测试阶段。本次Kubernetes 1.16的亮相,也标志着CRD迎来了自己的通用(GA)版本。

大幅调整的指标

Kubernetes此前一直在广泛采用一套全局指标注册表,用于注册需要公开的各项指标。通过这样一套指标注册表,各项指标能够以更透明的方式进行注册。之前,各类稳定性要求都禁止使用Kubernetes指标。

存储卷扩展

新版本当中还包含一系列与存储卷以及卷修改相关的增强功能。CSI规范中的存储卷大小调整支持正转向beta测试阶段,其允许用户对任意CSI规范下的存储卷插件进行大小调整。

其它增强功能

640?wx_fmt=png

自定义资源迎来通用版本

CRD已经成为Kubernetes生态系统中的重要基础。作为对ThirdPartyResources原型方案的重新设计成果,CRD终于通过apiextensions.k8s.io/v1在1.16版本中步入通用阶段,且整合了大量Kubernetes发展过程中积累到的API相关演变经验。在推出通用版本时,我们的首要关注重点就是API客户端的数据一致性。

当大家升级到GA API时,会很快注意到以往的几个可选条目被升级为必要及/或默认选项。事实证明,结构模式、修剪未知字段、验证以及保护*.k8s.io组对于保障API正常使用确实非常重要,而现在我们更不能容忍意外状况的发生。转为默认选项,是API演进的另一大重要组成部分,默认情况下CRD.v1支持将直接启用。这一切,再配合CRD转换机制,足以构建起能够经受住时间考验的稳定API,正如原生Kubernetes资源能够在不破坏向下兼容性实现变更一样。

当然,CRD API的更新之路还远没有结束。我们对于任意子资源、API组迁移以及提升序列化协议效率等功能已经有了一定的改进思路,但这些变更应该会以可选形式提供,并与GA API中已经存在的内容互相补充。总之,一切以运营的便利性为目标!

更多关于自定义资源的细节信息,请参阅Kubernetes说明文档[1]。

利用Windows增强开启新的大门

Beta: 增强Windows容器的工作负载标识选项

Active Directory Group Managed Service Account(简称GMSA)支持即将完成beta测试阶段,而且将不推荐用户使用alpha版本阶段支持的某些注释。GMSA是一种特定类型的Active Directory账户,其允许Windows容器通过网络传输身份标识并与其它资源进行通信。Windows容器现在可以完成身份验证并访问外部资源。此外,GMSA还提供自动密码管理、经过简化的服务主体名称(SPN)管理,以及将管理委派给多服务器上其他管理员等功能。

在alpha测试阶段,我们加入了对RunAsUserName的支持。这是一条字符串,用于指定Windows中的容器标识(或者用户名)以运行该容器的入口点,其同时也是securityContext(WindowsSecurityContextOptions)中新添加的windowsOptions组件的一部分。

Alpha: 利用kubeadm改进设置与节点添加体验

新版本引入了kubeadm的alpha支持,这意味着Kubernetes用户能够轻松向现有集群当中添加(以及重置)Windows工作节点,操作方式与Linux节点完全相同。用户可以利用kubeadm准备Windows节点并加入集群。在操作完成之后,该节点将处于Ready状态并能够随时运行Windows容器。此外,我们还提供一组Windows专用脚本,旨在配合节点添加的其它资源与CNI安装需求。

Alpha: 引入对容器存储接口(CSI)的支持

为树外提供程序引入CSI插件支持,这意味着Kubernetes集群中的Windows节点能够利用持久存储功能运行基于Windows的工作负载。这显著扩展了Windows工作负载的存储选项范围,使用户能够在FlexVolume与树内存储插件之外获得新的选择。这一功能通过主机操作系统代理实现,该代理能够代理容器在Windows节点上执行高权限操作。

引入端点切片

Kubernetes 1.16版本还包含一项令人兴奋的全新alpha功能:端点切片(Endpoint Slices)。这些切片实际上就是一种指向端点资源的可扩展替代方案。在幕后,这些资源为Kubernetes的网络路由提供重要支持。每个网络端点都在这些资源之内受到追踪,而kube-proxy则利用这些端点生成代理规则,从而允许各Pod在Kubernetes之内轻松实现相互通信。

提供更强大的可扩展性

端点切片的一大关键目标,在于为Kubernetes服务提供更强大的可扩展性。对于现有端点资源,单一资源必须包含用于表示与某项服务相关联的全部Pod的网络端点。但如果该服务扩展至成千上万Pod,那么对应的端点资源也将无比庞大。在这种情况下,对该服务中的某一商战进行添加或删除,都会带来可观的操作成本。随着每一次端点资源的更新,代码中与该端点相关的部分都需要获取一份关于该资源的完整副本。现在,由于集群内的各个节点上都运行有kube-proxy,因此只需要面向各个节点发送副本即可。这项调整在小规模使用场景下影响不大,但在大规模集群中却会带来极为显著的影响。

举个简单的例子,假设我们拥有一套包含5000个节点与一个1 MB端点对象的集群,每一次更新都将带来大约5 GB的数据传输量(相当于一张DVD光盘)。考虑到部署期间滚动更新等事件的频繁出现,这无疑是一笔巨大的资源浪费。

利用端点切片,服务的网络端点可以被拆分为多种资源,从而显著降低大规模更新所需要传输的数据总量。在默认情况下,每个端点切片最多包含100个端点。

例如,假设我们拥有一套包含2万个网络端点,且分布在5000个节点上的集群。利用端点切片对单一端点进行更新,将带来更高的执行效率,因为每个端点只代表着网络端点总数中的一小部分。相较于以往将大端点对象传输至各个节点的方式,现在我们只需要传输已经变更的小型端点切片。实际效果就是,现在更新操作的数据传输量仅相当于以往的约二百分之一。


端点 端点切片
资源数量
1
20000/100=200
存储的网络端点数量
1*20k=20000
200*100=20000
各资源大小
20000*常量=-2.0MB
100*常量=-10kB
监控事件数据转移
-2.0MB*5000=10GB
-10kB*5000=50MB

端点切片的第二大主要作用,是提供一种在各类用例之内都具有高度可扩展性与实用性的资源。端点切片的还带来了新的拓扑属性。在默认情况下,其将填充Kubernetes中当前使用的拓扑标签,用以指示region与zone等属性。当然,这一字段也可以填充进其它自定义标签并配合更为专业的用例。

端点切片还实现了更强大的地址类型灵活性。每个端点切片都包含一份地址列表,多地址初始用例即可支持同时具有 IPv4与IPv6地址的双栈端点。

Kubernetes说明文档对端点切片做出了详尽阐述。此作为Kubernetes 1.16版本中的alpha功能,端点切片在默认情况下并未启用,但大家可以参阅说明文档了解如何在集群中将其开启。

其它重要功能更新:

  • Topology Manager[2],一款新型Kubelet组件,旨在协调资源分配决策,从而提供优化效果更好的资源分配能力。

  • IPv4/IPv6双栈[3]可以将IPv4与IPv6地址分配给各Pod与服务。

  • 面向云控制器管理器迁移提供更多扩展选项[4]。

  • 继续弃用extensions/v1beta1、apps/v1beta1以及apps/v1beta2 API。这些扩展已经在1.16中被淘汰!

发布时间

640?wx_fmt=png

Kubernetes 1.16目前已经可以从GitHub[5]上下载。要快速上手Kubernetes,请参阅我们的交互式教程[6]。大家也可以利用kubeadm轻松安装1.16版本。

发布团队

640?wx_fmt=png

此次发行版源自数百名技术与非技术贡献者的共同努力。在这里,我们要特别感谢微软公司首席项目经理Lachlan Everson所领导的发布团队。团队中的32名成员协调了发布工作中的各项具体事务,包括文档、测试、验证以及功能完整性等等。

随着Kubernetes社区的不断发展,我们的发布过程也代表着开源软件开发协作领域的又一惊人成功。Kubernetes仍在不断获得新用户,快速成长本身则创造出积极折反馈周期,吸引更多贡献者提交代码,最终建立起强大且极具活力的社区群体。截至目前,Kubernetes拥有超过32000名个人贡献者,社区成员总量则超过66000人。

发布吉祥物

640?wx_fmt=png

Kubernetes 1.16版本的发布徽章,灵感源自阿波罗16号的任务徽章。它代表着发布团队与社区付出的辛勤努力,也是对我们在整个发布周期之内分享挑战与乐趣的肯定及鼓励。这里,感谢微软公司的Ronan Flynn-Curran创作出这件华丽的作品。

Kubernetes 1.16发布:自定义资源、大幅调整的指标以及存储卷扩展_第2张图片


相关链接:

  1. https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/

  2. https://github.com/kubernetes/enhancements/issues/693

  3. https://kubernetes.io/docs//concepts/services-networking/dual-stack/

  4. https://github.com/kubernetes/enhancements/blob/master/keps/sig-cloud-provider/20190422-cloud-controller-manager-migration.md

  5. https://github.com/kubernetes/kubernetes/releases/tag/v1.16.0

  6. https://kubernetes.io/docs/tutorials/

原文链接:https://kubernetes.io/blog/2019/09/18/kubernetes-1-16-release-announcement/

基于Kubernetes的DevOps实战培训

640?wx_fmt=png

基于Kubernetes的DevOps战培训将于2019年10月11日在上海开课,3天时间带你系统掌握Kubernetes,学习效果不好可以继续学习。本次培训包括:容器特性、镜像、网络;Kubernetes架构、核心组件、基本功能;Kubernetes设计理念、架构设计、基本功能、常用对象、设计原则;Kubernetes的数据库、运行时、网络、插件已经落地经验;微服务架构、组件、监控方案等,点击下方图片或者阅读原文链接查看详情。

640?wx_fmt=jpeg

你可能感兴趣的:(Kubernetes 1.16发布:自定义资源、大幅调整的指标以及存储卷扩展)