k8s滚动升级
大约 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