百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

修改Deployment触发滚动刷新_修改滚动条的样式

off999 2025-09-29 10:13 28 浏览 0 评论

在 Kubernetes 中,修改 Deployment 并触发滚动更新(Rolling Update)是一个核心操作。

核心原则

Deployment 的滚动更新仅在 spec.template(Pod 模板)发生变化时触发。Kubernetes 通过计算 spec.template 的哈希值来判断是否需要创建新的 ReplicaSet 并替换旧的 Pod。

如何修改 Deployment 并触发滚动更新

方法 1:直接修改 spec.template(推荐)

任何对 spec.template 内部字段的修改都会自动触发滚动更新。

操作步骤:

  1. 编辑 Deployment 配置
kubectl edit deployment <deployment-name>
  1. 修改 spec.template 中的字段,例如:
  • 容器镜像
spec:
  template:
    spec:
      containers:
        - name: nginx
          image: nginx:1.21 # 从 nginx:1.19 更新到 nginx:1.21
  • 环境变量
spec:
  template:
    spec:
      containers:
        - name: app
          env:
            - name: VERSION
              value: "2.0" # 修改环境变量值
  • 资源限制
spec:
  template:
    spec:
      containers:
        - name: app
          resources:
            requests:
              memory: "256Mi"
              cpu: "100m"
            limits:
              memory: "512Mi"
              cpu: "200m"
  • 卷挂载(如你之前的问题):
spec:
  template:
    spec:
      containers:
        - name: app
          volumeMounts:
            - name: new-config
              mountPath: /etc/new-config
      volumes:
        - name: new-config
          configMap:
            name: updated-configmap
  1. 保存并退出(如果使用 kubectl edit)。
  1. 观察滚动更新
kubectl rollout status deployment/<deployment-name>
# 示例输出:Waiting for deployment "my-app" rollout to finish: 1 old replicas are pending termination...
# 最终输出:deployment "my-app" successfully rolled out
kubectl get pods -w # 实时观察旧 Pod 终止,新 Pod 启动

方法 2:使用 kubectl set 命令(快速修改镜像)

专门用于快速更新容器镜像。

kubectl set image deployment/<deployment-name> <container-name>=<new-image>:<tag>
# 例如:
kubectl set image deployment/nginx-deployment nginx=nginx:1.21

此命令会直接修改 spec.template.spec.containers[].image,从而触发滚动更新。

方法 3:强制重启(最可靠)

如果修改了 spec.template 但不确定是否触发更新,或想明确重启,使用:

kubectl rollout restart deployment/<deployment-name>

原理:此命令会在 spec.template.metadata.annotations 中添加一个时间戳注解(如 kubectl.kubernetes.io/restartedAt: "2025-08-22T07:30:00Z"),强制改变 Pod 模板,从而100%触发滚动更新。

方法 4:修改 spec.template.metadata.annotations(手动触发)

这是 最佳实践,用于确保任何变更(尤其是非容器字段变更)都能触发更新。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: my-app
      annotations:
        # 添加或修改此注解会强制触发更新
        kubernetes.io/change-cause: "Updated config on 2025-08-22"
        # 或
        # kubectl.kubernetes.io/restartedAt: "2025-08-22T07:30:00Z"
    spec:
      containers:
        - name: my-container
          image: my-image:v1
          # ... 其他配置

应用后:

kubectl apply -f deployment.yaml

什么修改 不会 触发滚动更新?

修改 spec 中 template 之外的字段,不会创建新 Pod:

  • spec.replicas:只调整 Pod 数量,现有 Pod 不重启。
  • spec.strategy:修改更新策略参数,但只影响下一次滚动更新。
  • spec.selector:禁止修改,会导致不可预测行为。

验证更新是否成功

  1. 检查滚动状态
kubectl rollout status deployment/<deployment-name>
  1. 查看新旧 ReplicaSet
kubectl get replicaset -l app=<your-app-label>
# 你会看到旧的 ReplicaSet (DESIRED > 0) 和新的 ReplicaSet (CURRENT > 0)
  1. 检查新 Pod 的配置
kubectl get pod <new-pod-name> -o yaml | grep -A 10 "containers"
# 确认镜像、环境变量、卷等已更新

回滚到上一个版本

如果更新后出现问题:

kubectl rollout undo deployment/<deployment-name>
# 回滚到更早的版本
kubectl rollout undo deployment/<deployment-name> --to-revision=2

总结

  • 触发条件:只有 spec.template 变化才会触发滚动更新。
  • 推荐方法
  • 直接修改 spec.template 中的配置(如镜像、环境变量、卷)。
  • 使用 kubectl rollout restart deployment/<name> 强制重启。
  • 在 spec.template.metadata.annotations 中添加注解作为明确信号。
  • 避免:依赖修改 spec.replicas 等非 template 字段来触发更新。

相关推荐

光影魔术手手机版下载(光影魔术手手机版下载 app)

1、打开光影魔术手软件,点击“打开”。2、选好需要去除文字的图片,插入光影魔术手中。3、然后点击左上角的“数码暗房”按钮。4、在打开的页面中选择“人像”。5、下拉菜单,在“人像”中选择“祛斑”按钮。6...

电视直播中央一台(电视直播中央一台开学第一课)

如果我们想在电脑或手机上观看中央电视台一套直播,只要用爱奇艺pps就可以了。1、点击进入应用商店,在搜索框中输入“爱奇艺”,点击搜索,并安装。2、安装结束后,在手机或电脑主页面找到爱奇艺图标,点击进入...

远程控制软件哪个好用(免费远程控制软件哪个好用)

一、UPDF——PDF文档处理分享二、腾讯会议——远程开会三、向日葵——远程控制四、Github——代码协同五、Snipaste——屏幕截图六、Canva——在线设计工具七、博思白板BoardM...

魔兽世界手游官网公测(魔兽世界手游官网公测 新闻)

2005年4月26日2005年4月26日由九城代理的《魔兽世界》国服开启公测,6月9日国服正式运营。2009年4月,暴雪将《魔兽世界》在国服的代理运营权由九城转交给网易。

qq2012(qq2012旧版本下载)

建议你升级到最新版本,因为一般来说旧版本都不会怎么更新、维护,容易出现BUG!

香蕉加速器(香蕉加速器怎么样)

OPPO系统自带的游戏加速器是HyperBoost据OPPO介绍,HyperBoost是OPPO花了三年时间自主研发的一项技术,由系统引擎、应用引擎和游戏引擎三部分组成,能够实现全场景系统,提升...

小说下载txt电子书免费全本下载

因为违规了。久久小说网的许多小说,都没有作者的授权而且他的名声太大了,被人给投诉然后违规追究了,就关闭了这个网站。所以平时看小说的时候,尽量到正版的网站去看,一些大网站,或者是一些小网站都可以去瞅一瞅...

无需wifi的手机游戏(无需wifi的手机游戏大全)

1最好玩的游戏不一定需要依赖wifi。2原因在于现在的游戏越来越注重玩家的体验和游戏性,不少游戏已经把单机玩法和多人联机完美融合在一起,让单机游戏也同样具有了和多人游戏一样的可玩性。此外,不少游戏...

手写输入法查字(手写输入法查字怎么设置)

您好,查字手写输入是指利用电子设备或者智能手机等设备,通过手写输入汉字进行文字输入的方式。用户可以直接用手指或者专用的手写笔在设备的屏幕上书写汉字,设备会将手写的字迹识别成文字并进行输入。这种输入方式...

office哪个版本最好用(office哪个版本好一点)

Office办公软件由微软公司开发,截至目前为止,最新版本为Microsoft365(Office365)。然而,“最好用”的版本取决于您的具体需求、预算和个人偏好。以下是一些不同版本及其特点的概...

大智慧炒股软件免费版(大智慧炒股软件手机版下载安装)

你是不是点到里面的收费行情了,有Level-2行情数据的肯定要收费的这几种都可以提供一般的股票行情、交易功能。特点方面,同花顺不怎么好上手,普及程度不高。大智慧经典版可以查询主力资金。钱龙旗舰版是界面...

短信验证码(短信验证码平台app)

短信验证码可以通过以下步骤来获取和使用:明确结论:获取短信验证码需要先输入手机号码,并且会在短信中收到验证码。解释原因:短信验证码是一种验证身份的方式,用于确认用户提供的手机号是否有效,以及确保用户是...

手机电视直播大全下载安装(电视直播-手机电视直播软件下载)
  • 手机电视直播大全下载安装(电视直播-手机电视直播软件下载)
  • 手机电视直播大全下载安装(电视直播-手机电视直播软件下载)
  • 手机电视直播大全下载安装(电视直播-手机电视直播软件下载)
  • 手机电视直播大全下载安装(电视直播-手机电视直播软件下载)
下载一个微信2(下载一个微信号)

首先打开手机里面的应用商店下载安装一个微信APP,然后分别用你的2个手机号注册微信或已经注册的登陆微信就可以了,这里你可以一个微信APP上分别切换不同微信号登陆使用,不过这个有点不方便使用,接下来的办...

英语翻译中文在线翻译(英语翻译中文在线翻译软件哪个好)
  • 英语翻译中文在线翻译(英语翻译中文在线翻译软件哪个好)
  • 英语翻译中文在线翻译(英语翻译中文在线翻译软件哪个好)
  • 英语翻译中文在线翻译(英语翻译中文在线翻译软件哪个好)
  • 英语翻译中文在线翻译(英语翻译中文在线翻译软件哪个好)

取消回复欢迎 发表评论: