【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

评论

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

腾讯某Java程序员为了肝出《300页图解网络知识》+《计算机底层操作系统

Java 程序员 后端

绝了!字节大牛最新上线1940页LeetCode刷题秘籍,堪称完美

Java 程序员 后端

网络编程四-原生JDK的NIO及其应用

Java 程序员 后端

老夫带你深度剖析Redisson实现分布式锁的原理

Java 程序员 后端

聊一聊Java中那些常见的并发控制手段

Java 程序员 后端

腾讯内部Netty文档笔记,内容涵盖Netty基础+入门+中级+高级

Java 程序员 后端

菜鸟程序员的超神之路——从校园到职场

Java 程序员 后端

统一处理controller层接口返回的数据

Java 程序员 后端

网关性能大PK,Spring Cloud Gateway让人大失所望!

Java 程序员 后端

架构实战营模块4课后作业

胡颖

架构实战营

自己把985道Java面试题整理细分26部分,五面成功面上滴滴

Java 程序员 后端

编码习惯-函数编写建议

Java 程序员 后端

聊一聊Java中那些常见的并发控制手段(1)

Java 程序员 后端

肝到吐血!字节跳动技术专家耗时两年整理出1014页SSM开发实战,你还没看过吧!

Java 程序员 后端

腾讯面试Java高频210题解析:Spirng+设计模式+Redis+MySQL

Java 程序员 后端

膜拜!阿里内部都在强力进阶学习springboot实战派文档

Java 程序员 后端

美团二面问源码卒!闭门偷学318页Spring深度手册,再战

Java 程序员 后端

耗时4个月,阿里架构师打造java面试突击文档,10位朋友已拿offer

Java 程序员 后端

菜鸟弱弱地问:找个薪资待遇差的工作能成长吗?

Java 程序员 后端

网络编程三-原生JDK的BIO以及应用

Java 程序员 后端

腾讯T3大牛-带你深入解析静态分派-&-动态分派原理

Java 程序员 后端

腾讯程序员熬夜码字:网络 IO 演变发展过程和模型介绍,仅此一篇

Java 程序员 后端

终于,字节跳动要取消大小周了,我 1

Java 程序员 后端

绝了!华为技术专家居然把JVM内存模型讲解这么细致!

Java 程序员 后端

终于等到了!阿里内部“性能怪兽”开源了,竟是Nginx

Java 程序员 后端

腾讯,阿里,小米等Java开发岗面试真题,kafka+Redis

Java 程序员 后端

聊一哈,新入如何优雅的跟老板打招呼

Java 程序员 后端

腾讯Java岗面试,竟被“锁”给搞晕了?这样复习

Java 程序员 后端

腾讯社招(Java岗)四面已拿offer,问的很全面,几大块全涉及

Java 程序员 后端

经典算法(21)毕业生求职必会算法 八皇后问题

Java 程序员 后端

给Swagger换了个新皮肤,瞬间高大上了

Java 程序员 后端

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