跳至主要內容

k8s滚动升级

xw大约 1 分钟k8s

滚动升级

示例nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: xw-nginx
  name: xw-nginx
  namespace: dev
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  strategy:
    type: RollingUpdate
date: 2022-02-11
    ## 最大不可用pod数量
    maxUnavailable: 1
    ## 用来指定可以创建的超出期望 Pod 个数的 Pod 数量。此值可以是绝对数(例如,5)或所需 Pods 的百分比(例如,10%)
    maxSurge: 5
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.23.0
        name: nginx
        resources: {}
status: {}

这里必须指定升级策略为 RollingUpdate,升级策略有如下几种:

  • Recreate : 删除全部旧的pod,然后创建新的pod
  • RollingUpdate:滚动升级更新,删除部分,更新部分,在整个更新过程中,存在两个版本的pod
    • maxUnavailable ,升级过程中不可用Pod的最大数量,默认为25%,在滚动更新时,我们可以忍受多少个 Pod 无法提供服务,值越小越能保证服务稳定,更新越平滑
    • maxSurge,用来指定可以创建的超出期望 Pod 个数的 Pod 数量。此值可以是绝对数(例如,5)或所需 Pods 的百分比(例如,10%)

使用 kubectl apply -f nginx.yaml进行更新。

回滚

## 查看历史版本列表
kubectl rollout history deployment/xw-nginx -n dev

## 查看具体某一个历史版本信息
kubectl rollout history deployment/xw-nginx -n dev --revision=2

## 回滚上一版本
kubectl rollout undo deployment/xdclass-deploy -n dev

## 查看升级情况
kubectl rollout status deployment/xdclass-deploy -n dev

## 回滚指定版本
kubectl rollout undo deployment/xdclass-deploy -n dev --to-revision=2