K8S漏洞报告 | 近期bug fix解读

栏目: 编程工具 · 发布时间: 5年前

内容简介:安全漏洞CVE-2019-10021003月2日,kubernetes社区公布了一个中等程度的安全漏洞CVE-2019-1002100。该漏洞最早由Carl Henrik Lunde发现,并于2月25日在kubernetes发布issue(#74534)。根据描述,具有patch权限的用户可以通过发送一个精心构造的patch请求来消耗apiserver的资源,最终会导致apiserver无法响应其他请求。

安全漏洞CVE-2019-1002100

3月2日,kubernetes社区公布了一个中等程度的安全漏洞CVE-2019-1002100。

该漏洞最早由Carl Henrik Lunde发现,并于2月25日在kubernetes发布issue(#74534)。根据描述,具有patch权限的用户可以通过发送一个精心构造的patch请求来消耗apiserver的资源,最终会导致apiserver无法响应其他请求。

具体被构造的请求是一个json-patch类型的patch请求,比如kubectl patch --type json或"Content-Type: application/json-patch+json",大家可以通过构造类似的请求检查自己的apiserver是否有此漏洞。

kubernetes宣布这是一个中等严重程度的漏洞,并且很快发布了修复的版本,包括v1.11.8、v1.12.6、v1.13.4,大家可以升级到对应的版本以修复此漏洞。

当然,如果不想升级kubernetes版本的话,也可以规避掉这个问题。只给可信任的用户发放patch权限就行了。

最后,该漏洞对应的issue和修复pr信息如下,大家可以自行参考学习:

K8S漏洞报告 | 近期bug fix解读

Scheduler相关bug fix分析

随着kubernetes的成熟,集群规模也越来越大,而在大规模集群中,scheduler似乎越来越成为整个集群的瓶颈。近期的bug fix都有不少是scheduler相关的问题。下面就根据这段时间scheduler相关的bug fix,分析大规模集群中调度器可能出问题的地方。

#72754 修复

该问题的背景是#71486这个issue。加入大规模集群存在很多暂时不能调度的pod,当有事件更新时,scheduler会将这些pod放到active队列重新进行调度,而新加入的pod也会进入这个队列。这就会导致这个队列过大,这个队列本身是按照pod优先级排列,这样新加入的pod可能会排到同优先级的其他不可调度的pod之后。

由于经常会有事件触发unscheduleable的pod重新调度,这就可能会导致有些pod一直排不到。

针对这个问题的修复方式就是修改优先级队列的 排序 逻辑,这个过程也经过了两轮优化,最终版本是:

  • 默认按照pod优先级排序
  • pod优先级相同的话使用pod的podTimestamp排序,时间越早,优先级越高。

而podTimestamp根据pod生命周期的不同会选择不同的时间标签:

  • 新创建的pod:CreationTimestamp
  • 已经成功调度过的pod:LastTransitionTime
  • 调度失败的pod:LastProbeTime
    #73296 防止pod调度到not ready的节点

该问题由issue#72129提出,因为scheduler调度时不再关心node状态(只根据node上的taint调度),而新创建的node虽然状态为not ready,但是没有被打上notready的taint,scheduler可能在节点ready之前就把pod调度到not ready的节点上,这显然不是我们期望的行为。

该bug fix对这个问题的解决方法是,添加一个名为nodetaint的admission controller,这样在节点创建时就会给节点添加一个taint,从而无差别的给新创建的node添加notready的taint。

#73454 添加协程定时将不可调度的pod移动到active队列

scheduler之前的逻辑,是通过事件触发不可调度的pod移动到active队列重新调度。

这个逻辑在大部分场景下没什么问题,但是在大规模集群中,有可能出现有新的事件触发,但是scheduler没有及时同步这个事件,pod根据之前的信息放入不可调度的队列。而这时候事件已经发生过了,不会触发它重新调度。

这就有一定的概率导致pod可以被调度,但是放到了不可调度队列,又在很长一段事件不会重试。

本bug fix是通过添加一个协程,以1min为间隔,将不可调度队列中的pod放到active队列重新调度。

kubernetes 1.13.2-1.13.4 bug fix数据分析

本周更新1/11-3/4期间的相关bug fix数据,正好是1.13.2-1.13.4两个版本间的数据。

总体来说,这两个版本更新的内容并不多,总共也才36条bug fix,去第三方云提供商相关的、test相关的,则只有20+条。其中比较严重的bug就更稀缺了。可见kubernetes核心组件已经愈趋稳定。

另外前几天社区公布了一个不大不小的漏洞,具体上文已经分析过了。大家可以根据自己的情况决定是否升级到最新版本。

下面是这段时间值得关注的一些pr,大家有兴趣的话可以自行前往社区查看原始pr学习:

72754 #73296 #73454 #73562 #73909 #74102

最后,关于具体数据,还是查看图表吧:

bug严重程度统计

K8S漏洞报告 | 近期bug fix解读

近期bug fix数据分析:

K8S漏洞报告 | 近期bug fix解读


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

R语言实战(第2版)

R语言实战(第2版)

[美] Robert I. Kabacoff / 王小宁、刘撷芯、黄俊文等 / 人民邮电出版社 / 2016-5 / 99.00元

本书注重实用性,是一本全面而细致的R指南,高度概括了该软件和它的强大功能,展示了使用的统计示例,且对于难以用传统方法处理的凌乱、不完整和非正态的数据给出了优雅的处理方法。作者不仅仅探讨统计分析,还阐述了大量探索和展示数据的图形功能。新版做了大量更新和修正,新增了近200页内容,介绍数据挖掘、预测性分析和高级编程。一起来看看 《R语言实战(第2版)》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具