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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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 热点速览」