k8s控制器之StatefulSet--第四弹StatefulSet 的更新策略

news/2024/10/28 15:23:54/

StatefulSet 的更新策略

在 Kubernetes 1.7 及之后的版本中,可以为 StatefulSet 设定 .spec.updateStrategy 字段,以便您可以在改变 StatefulSet 中 Pod 的某些字段时(container/labels/resource request/resource limit/annotation等)禁用滚动更新。

On Delete

OnDelete 策略实现了 StatefulSet 的遗留版本(kuberentes 1.6及以前的版本)的行为。如果 StatefulSet 的 .spec.updateStrategy.type 字段被设置为 OnDelete,当您修改 .spec.template 的内容时,StatefulSet Controller 将不会自动更新其 Pod。您必须手工删除 Pod,此时 StatefulSet Controller 在重新创建 Pod 时,使用修改过的 .spec.template 的内容创建新 Pod。

Rolling Updates

.spec.updateStrategy.type 字段的默认值是 RollingUpdate,该策略为 StatefulSet 实现了 Pod 的自动滚动更新。在用户更新 StatefulSet 的 .spec.tempalte 字段时,StatefulSet Controller 将自动地删除并重建 StatefulSet 中的每一个 Pod。处理顺序如下:

  • 从序号最大的 Pod 开始,逐个删除和更新每一个 Pod,直到序号最小的 Pod 被更新

  • 当正在更新的 Pod 达到了 Running 和 Ready 的状态之后,才继续更新其前序 Pod

  • Partitions

    通过指定 .spec.updateStrategy.rollingUpdate.partition 字段,可以分片(partitioned)执行RollingUpdate 更新策略。当更新 StatefulSet 的 .spec.template 时:

    • 序号大于或等于 .spec.updateStrategy.rollingUpdate.partition 的 Pod 将被删除重建
    • 序号小于 .spec.updateStrategy.rollingUpdate.partition 的 Pod 将不会更新,及时手工删除该 Pod,kubernetes 也会使用前一个版本的 .spec.template 重建该 Pod
    • 如果 .spec.updateStrategy.rollingUpdate.partition 大于 .spec.replicas,更新 .spec.tempalte 将不会影响到任何 Pod

大部分情况下,您不需要使用 .spec.updateStrategy.rollingUpdate.partition,除非您碰到如下场景:

  • 执行预发布
  • 执行金丝雀更新
  • 执行按阶段的更新
  • Forced Rollback

    当使用默认的 Pod 管理策略时(OrderedReady),很有可能会进入到一种卡住的状态,需要人工干预才能修复。

    如果您更新 Pod template 后,该 Pod 始终不能进入 Running 和 Ready 的状态(例如,镜像错误或应用程序配置错误),StatefulSet 将停止滚动更新并一直等待。

    此时,如果您仅仅将 Pod template 回退到一个正确的配置仍然是不够的。由于一个已知的问题,StatefulSet 将继续等待出错的 Pod 进入就绪状态(该状态将永远无法出现),才尝试将该 Pod 回退到正确的配置。

    在修复 Pod template 以后,您还必须删除掉所有已经尝试使用有问题的 Pod template 的 Pod。StatefulSet此时才会开始使用修复了的 Pod template 重建 Pod。


http://www.ppmy.cn/news/497546.html

相关文章

redis登录常见报错

第一次接触redis登录的时候遇见几个报错 一、使用以下两个命令报错: ./redis-cli -h 127.0.0.1 -p 6380 ./redis-cli -p 6380 报错:Could not connect to Redis at 127.0.0.1:6380: Connection refused 应该和redis.conf中配置的bind字段的IP有关…

vue3-实战-12-管理后台-权限管理之菜单管理模块-首页-主题颜色-暗黑模式

目录 1-列表页面功能开发 1.1-需求原型分析 1.2-接口和数据类型定义 1.3-获取服务端数据渲染页面 2-新增编辑菜单 2.1-原型需求分析 2.2-表单数据收集和页面结构开发 2.3-提交或者取消 3-删除菜单 4-首页开发 5-暗黑模式的切换和主题颜色 5.1-暗黑模式 5.2-主题颜…

【MongoDB】五、MongoDB分片集群的部署

【MongoDB】五、MongoDB分片集群的部署 实验目的实验内容实验步骤环境准备部署 Config server配置Config Server副本集部署Shard部署mongos启动分片功能查看分片信息 实验小结 实验目的 能够通过部署MongoDB分片集群熟悉MongoDB分片集群架构和基本操作,从而解决大数…

C++语法-引用,重载(2)

引用(reference) 引用就是别名的意思 机器猫 小叮当 哆啦A梦 龙血武姬 龙女 希瓦娜 都是指的是同一个东西 引用的语法 引用既可以指向变量,也可以指向常量int num 1;int& r_num num;//num的应用const int& cr 10;//常量的引用类型名& 引用名 …; …

ChatGPT在前,华为盘古Chat在后

国产盘古Chat对话方面堪比GPT-3.5 什么是ChatGPT?简单来说,就是一个能够和人类自然对话的人工智能系统。它可以理解你的语言,回答你的问题,甚至给你提供建议和服务。它不仅可以处理文字,还可以处理图片、视频、音频等…

微信小程序授权打开摄像头,授权相册保存图片

1、授权打开摄像头 doTakePhoto() {let that thiswx.getSetting({success(res) {// 第一次未授权if (res.authSetting[scope.camera] undefined) {wx.authorize({scope: scope.camera,success() {// 授权成功...}})}// 第二次未授权else if (!res.authSetting[scope.camera]…

鸿蒙系统兼容微软,效仿华为鸿蒙系统!微软放大招:新版Win10系统兼容安卓应用...

【12月1日讯】相信大家都知道,华为鸿蒙OS2.0系统手机Bate版本即将在12月16日正式发布,届时有关于华为鸿蒙手机OS系统的所有细节都将得到曝光,这也是广大网友们最为期待的东西,但就在11月28日,根据媒体最新报道&#xf…

微软明年停止支持IE浏览器 鼓励使用Edge浏览器

微软在其官方社区宣布自今年 11 月 30 日起,Microsoft Teams Web 应用将逐步停止对IE11的支持;从 2021 年 8 月 17 日起,IE 11 浏览器将不再支持微软旗下包括Office365,OneDrive 云盘,Outlook 邮箱等办公软件服务。微软…