kubernetes deployment滚动升级、暂停、回滚
作者:互联网
一、kubernetes deployment滚动升级、暂停、回滚
kubectl rollout滚动升级的帮助文档
$]kubectl rollout --help Manage the rollout of a resource. 管理资源的部署。 有效的资源类型包括: * deployments * daemonsets * statefulsets 示例: # Rollback to the previous deployment # 回滚到上一个部署 kubectl rollout undo deployment/abc # Check the rollout status of a daemonset # 检查守护进程的推出状态 kubectl rollout status daemonset/foo 可用命令: history 显示 rollout 历史 pause 标记提供的 resource 为中止状态 restart Restart a resource 重新启动资源 resume 继续一个停止的 resource status 显示 rollout 的状态 undo 撤销上一次的 rollout 用法: kubectl rollout SUBCOMMAND [options] Use "kubectl <command> --help" for more information about a given command. Use "kubectl options" for a list of global command-line options (applies to all commands).
一)kubernetes滚动升级deployment的yaml配置
minReadySeconds: Kubernetes在等待设置的时间后才进行升级 如果没有设置该值,Kubernetes会假设该容器启动起来后就提供服务了 如果没有设置该值,在某些极端情况下可能会造成服务不正常运行 maxSurge: 升级过程中最多可以比原先设置多出的POD数量 例如:maxSurage=1,replicas=5,则表示Kubernetes会先启动1一个新的Pod后才删掉一个旧的POD,整个升级过程中最多会有5+1个POD。 maxUnavaible: 升级过程中最多有多少个POD处于无法提供服务的状态 当maxSurge不为0时,该值也不能为0 例如:maxUnavaible=1,则表示Kubernetes整个升级过程中最多会有1个POD处于无法服务的状态。
1、配置方式一:pod使用百分比
apiVersion: apps/v1 kind: Deployment metadata: name: front-admin-web namespace: ops-dev-front spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: environment: ops-dev name: front-admin-web strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate
2、配置方式二:pod使用具体数字
apiVersion: apps/v1 kind: Deployment metadata: name: front-admin-web namespace: ops-dev-front spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: environment: ops-dev name: front-admin-web minReadySeconds: 5 strategy: # indicate which strategy we want for rolling update type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1
二)查看滚动更新的状态
~]# kubectl rollout status deployments.apps -n ops-dev-front front-admin-web
deployment "front-admin-web" successfully rolled out ### 升级成功
三)暂停升级
kubectl rollout pause deployment <deployment>
四)恢复deployment升级
kubectl rollout resume deployment <deployment>
五)deployment升级结束后,继续查看rs的状态
获取到服务deployment对应的rs ID,然后找到对应的rs的状态
kubectl get rs -n ops-dev-front |grep `kubectl describe deployments.apps front-admin-web -n ops-dev-front|grep "NewReplicaSet:"|awk '{print $2}'`
返回的结果如下:下面DESIRED、CURRENT、 READY三列的数字相等时,说明deployment升级结束
NAME DESIRED CURRENT READY AGE
front-admin-web-79f67fc4 1 1 1 74s
六)回滚deployment
最好最快的方式:回滚到上一次能够提供正常工作的版本
1、查看deployment历史版本
~]# kubectl rollout history deployment -n ops-dev-front front-admin-web deployment.apps/front-admin-web REVISION CHANGE-CAUSE 103 <none> 104 <none> 105 <none>
~]# kubectl rollout status deployments.apps -n biz-ops-front front-admin-web
标签:kubectl,回滚,kubernetes,web,admin,rollout,deployment,front 来源: https://www.cnblogs.com/happy-king/p/16113660.html