k8s 更新与回滚

Posted by ZhangShun Blog on February 23, 2019

更新

kubectlapply -f demo.yaml --record

回滚

kubectl apply每次更新应用时,Kubernetes都会记录下当前的配置,保存为一个revision(版次),这样就可以回滚到某个特定revision。

kubectl apply -f demo.yaml --record

–record的作用是将当前命令记录到revision记录中,这样我们就可以知道每个revison对应的是哪个配置文件了

通过kubectl rollout history deployment demo查看revison历史记录.

如果要回滚到某个版本,比如 revision 1,可以执行命令kubectl rollout undo deployment demo --to-revision=1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: zzz
spec:
  revisionHistoryLimit: 10  ①
  strategy: ②
    rollingUpdate:
      maxSurge: 35%
      maxUnavailable: 35%
  replicas: 7
  template:
    metadata:
      labels:
        app: web_server
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
      nodeSelector:  
        disktype: ssd

①Kubernetes只会保留最近的几个revision,以便回滚
②maxSurge控制滚动更新过程中副本总数超过DESIRED的上限,maxUnavailable不可用的副本相占DESIRED的最大比例(滚动升级失败)