写点什么

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:433487

评论

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

车载语音数据的重要性及关键技术:打造智能驾驶的人机交互体验

数据堂

挖掘中国方言语音数据的重要性与应用

数据堂

k8s client-go源码分析 informer源码分析(6)-Indexer源码分析

良凯尔

云原生 Kubernetes, 云原生, eBPF Client-go

语音识别唤醒词的挑战与未来发展

数据堂

基于Linux设计的倒车雷达系统

DS小龙哥

6 月 优质更文活动

OpenHarmony/HarmonyOS路由跳转并传值

坚果

OpenHarmony 6 月 优质更文活动

问答对话文本数据,构建智能问答对话系统的基础

数据堂

驾驶新时代:车载语音识别的革命性进展与应用

数据堂

情感语音识别数据的重要性及其在人机交互领域的应用

数据堂

语音识别唤醒词的技术与应用

数据堂

如何在 Linux 中从备份恢复 Crontab?

wljslmz

Linux Cron 6 月 优质更文活动

方言语音数据在方言语音识别中的关键作用

数据堂

探索中国方言多样性:中国方言数据库的重要性与应用

数据堂

k8s client-go源码分析 informer源码分析(5)-Controller&Processor源码分析

良凯尔

云原生 Kubernetes, 云原生, eBPF Client-go

TTS语音合成技术及其应用

数据堂

TTS语音合成技术的挑战和未来发展

数据堂

情感语音识别技术的挑战和未来发展

数据堂

【译】别用大炮打蚊子—ServiceMesh的替代方案

九零后程序员

nginx Service Mesh 网络 security 服务网格

ArkTS语言OpenHarmony/HarmonyOS项目代码规范

坚果

OpenHarmony 6 月 优质更文活动

如何在Cisco设备上停止Traceroute或Ping?

wljslmz

网络工程师 6 月 优质更文活动

k8s client-go源码分析 informer源码分析(4)-DeltaFIFO源码分析

良凯尔

容器 云原生 client Kubernetes, 云原生, eBPF Client-go

语音合成数据的重要性:打造自然流畅的语音合成体验

数据堂

情感语音识别技术及其应用

数据堂

情感语音合成,让机器如真人一样和我们交流

数据堂

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