9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

【独家】K8s 漏洞报告|引起 Kube-Apiserver 崩溃的 PR

  • 2020-01-10
  • 本文字数:1225 字

    阅读完需:约 4 分钟

【独家】K8s漏洞报告|引起Kube-Apiserver崩溃的PR

1. 近期 BugFix 汇总


2. 近期重要 BugFix 分析


——本期更新内容


1


近期 Bug Fix 数据汇总


Kubernetes 1.17 已于一个月前发布,针对此版本的 bug fix 相对较少,且到现在为止仍然只有 1.17.0 一个小版本。笔者通过分析发现绝大多数的 Bug Fix 都是一些小的或者冷门特性的修复,不影响正常使用。下面会挑选用户可能比较关心的 Bug 进行解读。


1


近期重要 Bug Fix 分析


回滚 # 83520: 引起 Kube-Apiserver 崩溃的 PR


按照 Kubernetes 的设计,在进行 List 操作时,请求参数 option 的 ResourceVersion 字段有以下三种设置:


  1. 如果不设置,则请求 Etcd 中最新的数据。

  2. 如果设置为 0,则返回 Api-server 中缓存的所有数据。

  3. 如果设置为非 0 值,则返回至少与给定值一样新的结果。


#83520 这个 PR 合入之前,Client-go 中的 List 操作总是将请求参数 option 中的 ResourceVersion 设置为“0”,也就是返回 Api-server 中缓存的所有数据。这样会导致在重新 List 时,有返回旧数据的可能。



#83520 合入后,在重新 List 时,option 中的 ResourceVersion 不再设为 0,而是设置为上一次收到的资源的 ResourceVersion。这样可以避免收到老的事件且重复处理。如果服务端返回 410(即请求中的 ResourceVersion 太旧),将会把 ResourceVersion 设为空并继续 List,此时将请求 Etcd 中最新的数据。



但在测试过程中发现 #83520 合入后,在 master 滚动升级的过程中会引起集群失败。原因在于:


  1. 大规模集群环境下,在滚动升级 master 的过程中,新起的 Api-Server 都是从 Etcd 获取的最新数据。

  2. 客户端用本地缓存的上一次收到的资源的 ResourceVersion 去 List,此时服务端将给客户端返回 410,那么客户端都会将 ResourceVersion 设为空并继续 List。

  3. 此时对于每个请求 Api-Server 都会去 Etcd 请求数据,并且转码。

  4. 大规模场景下,大量的客户端执行此操作,这将使 Api-Server 卡死,出现集群失败的情况。


目前 #83520 已经被回滚,并且 cherry-pick 到 release-1.17,但是还未出现在小版本中。


受影响版本: v1.17.0


相关 PR、Issue:


https://github.com/kubernetes/kubernetes/pull/83520


https://github.com/kubernetes/kubernetes/pull/86824


https://github.com/kubernetes/kubernetes/issues/86483


END



有奖活动



【HDC.Cloud 2020 开源黑客松编程大赛】


华为公司 Cloud & AI 在 HDC.Cloud 2020 面向全球开源开发者举办的一场编程马拉松大赛,采用线上报名、HDC 现场开发比赛的方式。


包含 5 大赛题,每个赛题排名第一和第二的团队将获得:


  • HDC.Cloud 2020 开源黑客松获奖证书

  • 价值 3999 元的 Atlas 200 DK 开发者套件,团队成员每人一套!


赛题介绍请戳下图



【贡献有奖,超简单】


KubeEdge & Volcano 社区联合举办贡献者活动,将送出 20 张价值¥2048 的华为开发者大会(2020)门票,只要参与社区贡献就有机会获得门票。


提交代码修改、发掘 Bug、代码 review、提交文档修改、提交 Issue、发表博客、完善测试用例、反馈需求、增加使用案例等都属于社区贡献,来社区贡献你的 Idea 吧!


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2020-01-10 13:562573

评论

发布
暂无评论
发现更多内容

SpringBoot集成Tomcat服务

知了一笑

Java 架构

前端二面react面试题集锦

beifeng1996

React

即刻报名!飞桨黑客马拉松第四期如约而至,等你挑战

飞桨PaddlePaddle

深度学习 paddle 开源 大赛 飞桨

LR性能测试常见问题及处理方法(四)

性能测试 问题排查 LoadRunner 云性能测试

基于Unittest框架,使用Python+Selenium+Webdriver的WebUI自动化测试项目应用实例(附源码)

Python 单元测试 自动化测试 unittest

国产技术迎来突破,14nm芯片横空出世,低代码也有好消息

这我可不懂

低代码 芯片

osx使用alfred集成有道查词

alps2006

macos Alfred 有道

百度工程师浅谈分布式日志

百度Geek说

分布式 运维 日志 百度文库 企业号 2 月 PK 榜

前端面试指南之JS面试题总结

loveX001

JavaScript

广告流量反作弊风控中的模型应用

vivo互联网技术

算法 广告 风控系统

Unittest+Python接口自动化测试如何进行token关联?

Python 自动化测试 unittest Token

Spark练习题

mm

Sparksql Spark Scala 大数据开发

LR性能测试常见问题及处理方法(三)

性能测试 问题排查 LoadRunner

社招前端常考react面试题总结

beifeng1996

React

FDF循环互助智能合约开发系统搭建

薇電13242772558

智能合约

软件测试/测试开发 | App常见bug解析

测试人

软件测试 自动化测试 测试开发 app测试

社招中级前端笔试面试题总结

loveX001

JavaScript

2023前端二面经典面试题汇总

loveX001

JavaScript

LR性能测试常见问题及处理方法(五)

性能测试 问题排查 LoadRunner 云性能测试

快学会这个技能-.NET API拦截技法

沙漠尽头的狼

hook harmony .NET API拦截 拦截 伪造

云业务成本的组成与管理趋势

SEAL安全

云服务 云成本 FinOps 企业号 2 月 PK 榜

在vue的v-for中,key为什么不能用index?

bb_xiaxia1998

Vue

高级前端二面必会vue面试题合集

bb_xiaxia1998

Vue

React-hooks面试考察知识点汇总

beifeng1996

React

React-Hooks怎样封装防抖和节流-面试真题

beifeng1996

React

推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐

汀丶人工智能

nlp 推荐算法

ChatGPT 入门案例|商务智能对话客服(四)| 社区征文

TiAmo

AI ChatGPT

不同程序集,名称空间类名和方法签名都一样的方法,如何调用

newbe36524

C# Docker Kubernetes

LR性能测试常见问题及处理方法(六)

性能测试 问题排查 LoadRunner 云性能测试

每日一题之Vue数据劫持原理是什么?

bb_xiaxia1998

Vue

社招前端一面必会vue面试题

bb_xiaxia1998

Vue

  • 扫码添加小助手
    领取最新资料包
【独家】K8s漏洞报告|引起Kube-Apiserver崩溃的PR_架构_华为云原生团队_InfoQ精选文章