k8s滚动升级
1.配置deploy.yaml
(配置两个变量containername和VERSION)
apiVersion: apps/v1 kind: Deployment metadata: name: ${containername} namespace: deployment spec: replicas: 2 selector: matchLabels: app: demoapp release: stable revisionHistoryLimit: 10 minReadySeconds: 0 template: metadata: labels: app: demoapp release: stable spec: dnsPolicy: ClusterFirst containers: - name: ${containername} image: ikubernetes/demoapp:${VERSION} ports: - containerPort: 80 name: http livenessProbe: httpGet: path: '/livez' port: 80 initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 1 successThreshold: 1 failureThreshold: 5 readinessProbe: httpGet: path: '/readyz' port: 80 initialDelaySeconds: 10
2.通过envsubst输入变量参数实现滚动升级
containername='demodeploy' VERSION='v1.2' envsubst < deploy.yaml |kubectl apply --record -f -
3.查看升级情况
~/deployment# kubectl rollout status deployment demodeploy -n deployment
deployment "demodeploy" successfully rolled out
4.也可用-w跟踪升级进度
~/deployment# kubectl get deployments.apps demodeploy -n deployment -w
NAME READY UP-TO-DATE AVAILABLE AGE
demodeploy 2/2 2 2 175m
5.查看就旧版本replicaset保留的历史数据
~/deployment# kubectl get replicasets.apps -l app=demoapp,release=stable -n deployment
NAME DESIRED CURRENT READY AGE
demodeploy-78fd5f9cdc 2 2 2 13m
demodeploy-8548d954cb 0 0 0 130m
demodeploy-b59f6ccb5 0 0 0 177m
6.打印deploy修订历史
~/deployment# kubectl rollout history deployment demodeploy -n deployment
deployment.apps/demodeploy
REVISION CHANGE-CAUSE
1 kubectl apply --record=true --filename=-
2 kubectl apply --record=true --filename=-
3 kubectl apply --record=true --filename=-
7.执行回滚操作
~/deployment# kubectl get deployments.apps demodeploy -oyaml -n deployment |grep image:
- image: ikubernetes/demoapp:v1.2
~/deployment# kubectl rollout undo deployment demodeploy -n deployment
deployment.apps/demodeploy rolled back
~/deployment# kubectl get deployments.apps demodeploy -oyaml -n deployment |grep image:
- image: ikubernetes/demoapp:v1.1(回滚成功)
~/deployment# kubectl rollout history deployment demodeploy -n deployment
deployment.apps/demodeploy
REVISION CHANGE-CAUSE
1 kubectl apply --record=true --filename=-
3 kubectl apply --record=true --filename=-
4 kubectl apply --record=true --filename=- (删除原来修订标识符2,改为新的标识符4)
8.通过--to-revision指定要回滚的修订标识,确定回滚到指定版本
~/deployment# kubectl rollout undo deployment demodeploy --to-revision=1 -n deployment
deployment.apps/demodeploy rolled back
验证
~/deployment# kubectl rollout history deployment demodeploy -n deployment
deployment.apps/demodeploy
REVISION CHANGE-CAUSE
3 kubectl apply --record=true --filename=-
4 kubectl apply --record=true --filename=-
5 kubectl apply --record=true --filename=-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?