k8s的deployment回滚

公司k8s环境回滚支持两种方式:

(1)根据镜像版本号回滚。

(2)根据命令kubeclt rollout 进行回滚。

回滚到上一个版本

kubectl 部署是,加上--record=true方便记录版本和回退

1
kubectl rollout undo  deploy/deployment名称  -n 命令空间
deployment历史记录
1
kubectl rollout history deployment/deployment名称   -n 命令空间
-- revision参数回滚到指定版本
1
kubectl rollout undo deployment/deployment名称 --to-revision=2   

查看指定版本的信息

kubctl rollout history deployment deployment名称 --revision=5

spec.revisionHistoryLimit: 设置保留 RS 旧的 revision 的个数,设置为0的话,不保留历史数据
spec.minReadySeconds: 可选参数,指定新创建的 Pod 在没有任何容器溃的情况下视为 Ready最小的秒数,默认为0,即一旦被创建就视为可用.

滚动更新的策略:
spec.strategy.type: 更新 deployment 的方式,默认是 RollingUpdates
RollingUpdate: 滚动更新,可以指定maxSurge和maxUnavailable
maxUnavailable: 指定在回滚或更新时最大不可用的 Pod 的数量,可选字段,默认25%,可以设置成数字或百分比,如果该值为0,那么maxSurge 就不能0
emaxSurge:可以超过期望值的最大 Pod数,可选字段,默认为25%,可以设置成数字或百分比,如果该值为0,那么maxUnavailable 不能为0

deployment的暂停与恢复

复制代码
使用命令kubectl rollout pause暂停 Deployment 的更新操作:
$ kubectl rollout pause deployment/nginx-deployment
deployment.extensions/nginx-deployment paused
修改 Deployment 的镜像信息为 nginx:1.9.1:
$ kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
deployment.extensions/nginx-deployment image updated
查看更新历史记录,可以看到并没有触发对应的更新操作:
$ kubectl rollout history deployment/nginx-deployment
deployment.extensions/nginx-deployment
REVISION  CHANGE-CAUSE
1         kubectl create --filename=nginx-deployment.yaml --record=true
这里我们再一次更新 Deployment 配置,限制容器的资源使用:
$ kubectl set resources deployment nginx-deployment -c=nginx --limits=cpu=200m,memory=512Mi
deployment.extensions/nginx-deployment resource requirements updated
恢复 Deployment 的部署操作:
$ kubectl rollout resume deploy nginx-deployment
deployment.extensions/nginx-deployment resumed
复制代码

查看 RS 资源和 Deployment 的详细信息:

复制代码
# 可以看到新创建的 RS(nginx-deployment-7576c67d77)
$ kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-5754944d6c   0         0         0       6m40s
nginx-deployment-7576c67d77   3         3         3       58s

# 观察 nginx-deployment 的配置信息是否修改
$ kubectl describe deployment/nginx-deployment
...
Annotations:            deployment.kubernetes.io/revision: 2
                        kubernetes.io/change-cause: kubectl create --filename=nginx-deployment.yaml --record=true
...
Pod Template:
  Labels:  app=nginx
  Containers:
   nginx:
    Image:      nginx:1.9.1 # 镜像已经更新
    Port:       80/TCP
    Host Port:  0/TCP
    Limits: # 容器资源的限制已经生效
      cpu:        200m
      memory:     512Mi
复制代码

 

 

 
 
 
 
 
 
 
 
 
posted @   逆风飞翔的博客  阅读(878)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示