写点什么

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

评论

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

【面试总结】尚硅谷2021百度云,Java技术基础知识总结

Java 程序员 后端

一个Java程序员的腾讯面试心得,这次被它搞惨了

Java 程序员 后端

一名毕业三年的女程序媛面试头条经验,Java项目视频百度

Java 程序员 后端

【Spring注解驱动开发】未来教育二级java激活码,Java基础项目实战

Java 程序员 后端

【工作经验分享】kafka视频教程下载,Java开发者跳槽面试

Java 程序员 后端

【干货,马士兵的java教程,这个JVM虚拟机内存模型你必须知道

Java 程序员 后端

一个三非渣本的Java校招秋招之路,mysql使用教程,Java程序员全套

Java 程序员 后端

spring教程,java大学实用教程第四版作业题,中高级Java开发面试题

Java 程序员 后端

“金三银四”春招指南!linux高级编程教程,和阿里大佬的技术面谈

Java 程序员 后端

【面试必会】极客时间吾爱破解,和腾讯大牛的技术面谈

Java 程序员 后端

一个三非渣本的Java校招秋招之路,2021高级Java笔试总结

Java 程序员 后端

springmvc原理图解,尚硅谷ajax源码,Redis宕机数据丢失解决方案

Java 程序员 后端

Spring是怎样巧用三级缓存解决循环依赖的,nginx实战百度网盘,面试必问!

Java 程序员 后端

【一篇文章搞懂】,java程序设计案例教程许敏,费时6个月成功入职阿里

Java 程序员 后端

【大牛系列教学】,数据库系统原理及mysql应用教程第二版,面试心得体会

Java 程序员 后端

spring全方位深入探索,2021Java开发社招面试解答之性能优化

Java 程序员 后端

tomcat面试题,传智播客java就业班视频教程,Spring的XML解析原理

Java 程序员 后端

【大牛疯狂教学】,java教程网站免费,成功入职腾讯月薪45K

Java 程序员 后端

一个月成功收割腾讯、阿里、字节offer,springmvc面试题常问2020

Java 程序员 后端

Spring容器如何解决循环依赖的原理,Java编程教学视频

Java 程序员 后端

spring教程下载,linux入门基础教程,2021Java者未来的出路在哪里

Java 程序员 后端

spring源码视频教程,java尚学堂,Java项目视频

Java 程序员 后端

tomcat面试题汇总,java设计模式菜鸟教程,linux内核教程

Java 程序员 后端

tomcat服务器面试题,java项目开发实训教程,Java编程教程视频下载

Java 程序员 后端

【工作感悟】牛客java面试宝典pdf,助你面试一臂之力

Java 程序员 后端

【微信小程序】,java程序开发范例宝典百度云,Java零基础自学书籍

Java 程序员 后端

【金九银十】,java程序设计精编教程第三版,Redis有几种数据类型

Java 程序员 后端

springcloud百度网盘,牛客网面试题,Java面试高频知识点

Java 程序员 后端

spring教程,java程序设计基础教程,OMG

Java 程序员 后端

spring教程,spring框架菜鸟教程,Java重点知识点

Java 程序员 后端

【Spring注解驱动开发】java基础全套视频教程,被逼无奈开始狂啃底层技术

Java 程序员 后端

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