注意
如果使用的是 kubectl edit 命令,可以直接进行多次修改,无须暂停更新。
但 kubectl set 命令一般会集成在 CI/CD 流水线中,而 kubectl edit 是无法集成的。
$ kubectl rollout pause deploy nginx-deploy
deployment.apps/nginx-deploy paused
$ kubectl set image deploy nginx-deploy nginx=nginx:1.25.3
deployment.apps/nginx-deploy image updated
$ kubectl set resources deploy nginx-deploy --limits=cpu=200m,memory=512Mi -c nginx
deployment.apps/nginx-deploy resource requirements updated
$ kubectl rollout resume deploy nginx-deploy
deployment.apps/nginx-deploy resumed
$ kubectl get rs -l app=nginx
NAME DESIRED CURRENT READY AGE
nginx-deploy-585ff57b46 0 0 0 93m
nginx-deploy-68c574c9f 0 0 0 69m
nginx-deploy-798946d74d 0 0 0 36m
nginx-deploy-7c7b45cb47 5 5 5 4m12s
nginx-deploy-c86995cd6 0 0 0 59m
nginx-deploy-fcfc64c 0 0 0 40m
查看 deployment 的详细信息,可以看到 Deployment 的 image 已经变为 nginx:1.25.3,CPU 的 limit 变成了 200m:
$ kubectl describe deploy nginx-deploy
Name: nginx-deploy
Namespace: default
CreationTimestamp: Sun, 26 Nov 2023 10:32:16 +0800
Labels: <none>
Annotations: deployment.kubernetes.io/revision: 11
kubernetes.io/change-cause: kubectl.exe set image deploy nginx-deploy nginx=nginx:1.25.3 --record=true
Selector: app=nginx
Replicas: 5 desired | 5 updated | 5 total | 5 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
Containers:
nginx:
Image: nginx:1.25.3
Port: 80/TCP
Host Port: 0/TCP
Limits:
cpu: 200m
memory: 512Mi
Environment: <none>
Mounts: <none>
Volumes: <none>