写点什么

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

评论

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

MySQL:如果被更新字段的新值与旧值相等,SQL会被真正执行吗?

程序员拾山

MySQL

WSL中使用vcpkg安装pcl库出现编译失败的原因

大伟

精华推荐 | 【JVM深层系列】「GC底层调优系列」一文带你彻底加强夯实底层原理之GC垃圾回收技术的分析指南(GC原理透析)

洛神灬殇

Java JVM JVM原理 2023

MySQL统计总行数:听说count(*)性能更好,是真的吗

程序员拾山

MySQL

2022年终总结-无所吊谓

wood

年终总结 稳定 开心 普通的一年

技术如何分担产品之忧?

石云升

极客时间 1月月更 技术领导力实战笔记

Python 内置界面开发框架 Tkinter入门篇 甲

eng八戒

Python GUI tkinter

极客时间运维进阶训练营第十二周作业

9527

开源移动核心网Magma架构设计启示

俞凡

架构 网络 通信

复习前端:前端安全

devpoint

CSRF xss攻击 前端安全

从员工批量离职中,认识管理的价值

石云升

极客时间 1月月更 技术领导力实战笔记

架构误区系列12:一切皆依赖云平台

agnostic

云计算 部署架构

Best Wishes「兔」You!

阿里云视频云

如何快速优雅的用Know Streaming创建Topic

石臻臻的杂货铺

获取 topic等信息 后端、

工信部电子标准院:龙蜥操作系统获评“优秀”

OpenAnolis小助手

工信部 开源项目 获奖 龙蜥操作系统 生态构建

JSON.stringify() 的 5 使用场景

devpoint

JavaScript 前端开发 JSON格式化

技术管理者如何获得下属的认同?

石云升

极客时间 1月月更 技术领导力实战笔记

复习前端:浏览器缓存策略

devpoint

Service Worker 浏览器缓存 缓存技术

Studio One2024旗舰级DAW的跨版本升级

茶色酒

Studio One 5 Studio One2023

【Linux技术专题系列】「必备基础知识」一起探索和实践sftp配置之密钥方式登录

洛神灬殇

Linux SSH SSH工具 sftp

CleanMyMac X2024汉化版安装包新增

茶色酒

CleanMyMac X CleanMyMac X2023

Kratos微服务框架API工程化指南

golang gRPC microservice Kratos 工程化

架构误区系列11:无聊的架构归一

agnostic

架构治理

工作这么多年,我总结的数据传输对象 (DTO) 的最佳实践

JAVA旭阳

Java 架构

万字长文搞懂产品模式和项目模式

俞凡

团队管理

CleanMyMacX4.12.2最新版本更新下载

茶色酒

CleanMyMacX

【Java应用服务体系】「序章入门」全方位盘点和总结调优技术专题指南

洛神灬殇

Java 技术分析 应用调优 优化指南

Portraiture2024汉化版磨皮插件下载

茶色酒

Portraiture2023 Portraiture

你知道哈希算法,但你知道一致性哈希吗?

JAVA旭阳

Java 架构

复习前端:JavaScript V8 引擎机制

devpoint

chrome JIT V8

水果软件2024FL Studio中文语言版本下载

茶色酒

FL Studio FL Studio 21

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