kubernetes查看deployment回滚的历史记录:
kubectl rollout history deployment/deployment deployment-demo -n $namespace_name
基于deployment资源清单文件创建资源,并且查看每次revision的变化。
kubectl create -f deployment.yaml --record
设置deployment控制器中的镜像版本:
kubectl set image deployment deployment-demo deploymen-demo-container=xxx/nginx:v2.0 --record
查看资源deployment的更新记录:
kubectl rollout history deployment/deployment-demo
如果上次一更新资源清单,加了--record记录的参数,然后又进行了版本的更新而没有加--record参数,执行查看历史记录的时候,历史记录里面执行过的命令会自动加上--record=true的参数。
如果需要使用kubernetes的rollout进行滚动更新和回滚,包括历史记录查看,那么一定要加上把涉及到的命令加上--record的参数,把命令记录下来。
这样,进行deployment的回滚时,会有更多的信息可以查看处于回滚的哪个阶段。
执行deployment回滚更新的版本:
kubectl rollout undo deployment/deployment deployment-demo --to-revision=2
--to-revision指定当前回滚的版本,我们可以回滚到指定的版本。
kubectl rollout undo deployment/deployment-demo --to-revision=1
kubernetes 的资源deployment如果想回到指定的版本,需要在kubectl rollout undo命令后面加上--to-revision的参数去回滚到指定的版本。
暂停deployment资源的回滚更新:
kubectl rollout pause deployment/deployment-demo -n $namespace_name
Pod控制器deployment的清理策略:
可以设置
.spec.revisionHistoryLimit项来指定deployment最多保留多少条revision历史记录。默认的会保留所有的revision,如果把这项设置成0,deployment就不允许回退操作了,原因是:旧版本的ReplicaSet 不会保留,不会保存在etcd里面了。这时候再想回滚,只能使用资源清单文件了。这样设置之后,必须把资源清单文件保留下来。
删除所有的deployment控制器:
kubectl delete deployment --all
基于资源清单文件创建deployment.yaml:
kubectl apply -f deployment.yaml
基于资源清单文件创建deployment:
kunectl apply -f deployment.yaml && kubectl get pod -n $namespace_name
kubernetes etcd存储了当前kubernetes集群的信息。
如果在deployment的资源清单文件deployment.yaml的spec设置了revisionHistoryLimit参数称为0,那么执行kubectl get rs 将发现不再保留旧版本的ReplicaSet RS了,必须要保留资源清单文件,否则无法继续回滚。
多个rollout并行的时候,之前是按照版本顺序升级。由v1升级到v2再到v3。现在可能是v1直接升级到v3,越过中间状态v2。kubernetes只能记录最终状态,而不会记录中间态。
多个kuberctl rollout并行执行,那么kubernetes只会选择最终的版本进行部署,忽略中间版本的执行。
Deployment控制器支持声明式的表达,支持滚动更新和回滚。
deployment控制器原理:deployment控制不同的ReplicaSet RS,replicaset RS再去创建pod。这样做的好处是可以轻松地实现滚动更新和回滚,包括声明式的概念。
鼓励的话语:不问前程如何,但求落幕无悔。人生最棒的感觉,就是你做别人说你做不到的事!