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=-

posted @   JASON_yul  阅读(592)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示