AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

Kubernetes 滚动更新速率控制解读

  • 2019-12-09
  • 本文字数:893 字

    阅读完需:约 3 分钟

Kubernetes滚动更新速率控制解读

1 含义

服务在滚动更新时,deployment 控制器的目的是:给旧版本(old_rs)副本数减少至 0、给新版本(new_rs)副本数量增至期望值(replicas)。大家在使用时,通常容易忽视控制速率的特性,以下是 kubernetes 提供的两个参数:


  1. maxUnavailable:和期望 ready 的副本数比,不可用副本数最大比例(或最大值),这个值越小,越能保证服务稳定,更新越平滑;

  2. maxSurge:和期望 ready 的副本数比,超过期望副本数最大比例(或最大值),这个值调的越大,副本更新速度越快。

2 取值范围

数值

  1. maxUnavailable: [0, 副本数]maxSurge: [0, 副本数]

  2. maxSurge: [0, 副本数]


注意:两者不能同时为 0。

比例

  1. maxUnavailable: [0%, 100%] 向下取整,比如 10 个副本,5%的话==0.5 个,但计算按照 0 个;

  2. maxSurge: [0%, 100%] 向上取整,比如 10 个副本,5%的话==0.5 个,但计算按照 1 个;


注意:两者不能同时为 0。

建议配置

  1. maxUnavailable == 0

  2. maxSurge == 1


这是我们生产环境提供给用户的默认配置。即“一上一下,先上后下”最平滑原则:1 个新版本 pod ready(结合 readiness)后,才销毁旧版本 pod。此配置适用场景是平滑更新、保证服务平稳,但也有缺点,就是“太慢”了。

3 自定义策略

Deployment controller 调整 replicaset 数量时,严格通过以下公式来控制发布节奏。所以,如需快速发布,可根据实际情况去调整这两个值:


(目标副本数-maxUnavailable) <= 线上实际Ready副本数 <= (目标副本数+maxSurge)
复制代码


举例:如果期望副本数是 10,期望能有至少 80%数量的副本能稳定工作,所以:maxUnavailable = 2,maxSurge = 2 (可自定义,建议与 maxUnavailable 保持一致)


8 <= 线上实际Ready副本数 <= 12
复制代码


这样,更新过程中,线上能够正常提供服务的 pod 数总会保持在这个区间内。

4 总结

本文解释了 kubernetes 最易忽略的“滚动更新策略中控制更新速率”的特性:maxUnavailable 与 maxSurge,希望能对你在发布版本时有所帮助。


后续文章会带来 deployment controller 在多版本(replicaset)下控制滚动更新的原理,并分析其相应源码实现逻辑。


本文转载自公众号 360 云计算(ID:hulktalk)。


原文链接:


https://mp.weixin.qq.com/s/n73lMqYb5yZbpOprJdl01g


2019-12-09 10:433254

评论

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

大区块链的必然性

CECBC

区块链技术

第11周总结

Vincent

极客时间 极客大学

架构师训练营第四周作业

我是谁

极客大学架构师训练营

一次用户故事地图之旅

Bruce Talk

敏捷开发 用户故事 Product Owner 用户故事地图

第11周作业

Vincent

极客时间 极客大学

每天都要写吗?

Nydia

架构师训练营第四周学习总结

吴传禹

极客大学架构师训练营

架构师训练营第四周课后作业

Gosling

极客大学架构师训练营

马化腾的区块链理想

CECBC

区块链 马化腾

十六、深入Python字符串

刘润森

Python

架构师训练营第四周作业

吴传禹

极客大学架构师训练营

用Python绘制地理图

计算机与AI

Python 绘图

Linux的信号

菜鸟小sailor 🐕

c++

甲方日常 32

句子

随笔杂谈

Week 3学习总结

balsamspear

极客大学架构师训练营

手把手教你分析Mysql死锁问题

捡田螺的小男孩

MySQL 死锁

第四课系统架构课后作业

Geek_michael

极客大学架构师训练营

区块链要如何解决供应链金融痛点?

CECBC

区块链 金融

大型互联网系统常用的技术方案

天天向上

极客大学架构师训练营

典型的大型互联网应用方案

garlic

极客大学架构师训练营

自学编程,看书还是视频?

沉默王二

程序员 读书 自学编程 视频

十五、深入Python输入和输出

刘润森

Python

架构师训练营第四周学习总结

Gosling

极客大学架构师训练营

Flink时间服务和计时器-6-5

小知识点

scala 大数据 flink

三步法解析Express源码

执鸢者

面试 大前端 Node Express

如何设计大型互联网系统架构

天天向上

极客大学架构师训练营

第四周总结

Geek_ac4080

职场求生攻略答疑篇之 4 —— 社会有多真实,人心就有多虚伪

臧萌

职场 职场成长

Week 3命题作业

balsamspear

极客大学架构师训练营

迭代开发中的微服务拆分

码猿外

架构 微服务 架构演进

给新入职工程师的10条建议

supernova

管理 职场 工作方式

Kubernetes滚动更新速率控制解读_文化 & 方法_360云计算_InfoQ精选文章