rollout可用的资源包括deployments(无状态)和daemonsets(有状态),但是如果针对服务更新就需要用到资源滚动的速率,这里不在详细阐述,后期会有一个新的章节针对maxSurge的解释。看一下rollout有哪些命令:
kubectl rollout history ------(查看历史版本) kubectl rollout pause ------(暂停资源) kubectl rollout resume ------(恢复暂停资源) kubectl rollout status ------(查看资源状态) kubectl rollout undo ------(回滚版本) kubectl rollout restart ------(重新部署)
下面针对不通的命令举例说明:
[root@www.wulaoer.org ~]# kubectl rollout history -n wulaoer deployment wulaoer-service deployment.apps/wulaoer-service REVISION CHANGE-CAUSE 1 <none> 2 <none> 3 <none> 4 <none> 5 <none> 6 <none> 7 <none> 8 <none> [root@www.wulaoer.org ~]# kubectl rollout history -n wulaoer deployment wulaoer-service --revision=2 deployment.apps/wulaoer-service with revision #2 Pod Template: Labels: app=wulaoer-service pod-template-hash=9fb4b4458 release=qa Containers: wulaoer-service: Image: registry-vpc.cn-beijing.aliyuncs.com/reatil-harb/wulaoer-service-qa:6 Port: <none> Host Port: <none> Limits: cpu: 1 memory: 2560Mi Requests: cpu: 1 memory: 2560Mi Readiness: http-get http://:80/actuator/info delay=30s timeout=30s period=10s #success=1 #failure=10 Environment: aliyun_logs_log-wulaoer-service: stdout Mounts: <none> Volumes: <none>
两者的区别是一个查看服务的所有历史版本,一个是查看某一个版本的详细内容
[root@www.wulaoer.org ~]# kubectl rollout resume -n wulaoer deployment wulaoer-service deployment.apps/wulaoer-service resumed [root@www.wulaoer.org ~]# kubectl rollout pause -n wulaoer deployment wulaoer-service deployment.apps/wulaoer-service paused [root@www.wulaoer.org ~]# kubectl rollout status -n wulaoer deployment wulaoer-service deployment "wulaoer-service" successfully rolled out
一个暂停一个恢复,这里没有看到暂停和恢复到效果,可以自己创建一个pod,然后副本大一些,创建后暂停你会发现要求的副本没有创建完,等你恢复时,副本会继续创建。
kubectl rollout undo --dry-run=true -n wulaoer deployment wulaoer-service kubectl rollout undo -n wulaoer deployment wulaoer-service --to-revision=8
两者的区别是一查看上个版本的历史,一个是回滚到自定版本。
扩展部分:
以上是针对roolout的基础部分,上面有暂停有恢复,也有重新部署,你一定能想到restart,是的你猜对了,如果重新部署就是用的restart,这里要说明一下如果使用delete也可以实现重新部署但是delete的效果和restart不一样的,delete是直接删除,根据pod的restartPolicy会自动重新拉取,但是直接删除会影响到正在使用的请求,所以使用restart和更新是一样的,可以轮询更新,看下面的例子:
[root@www.wulaoer.org ~]# kubectl get pod -n wulaoer | grep wulaoer-service wulaoer-service-77b6db7778-hhqn7 1/1 Running 0 13m wulaoer-service-77b6db7778-r88fz 1/1 Running 0 95s wulaoer-service-77b6db7778-rp85c 1/1 Running 0 83s [root@www.wulaoer.org ~]# kubectl rollout restart -n wulaoer deployment wulaoer-service | grep wulaoer-service deployment.apps/wulaoer-service restarted [root@www.wulaoer.org ~]# kubectl get pod -n wulaoer | grep wulaoer-service wulaoer-service-77b6db7778-hhqn7 1/1 Running 0 13m wulaoer-service-77b6db7778-r88fz 1/1 Running 0 2m7s wulaoer-service-77b6db7778-rp85c 1/1 Running 0 115s wulaoer-service-785c5d5d84-7tgvc 0/1 Running 0 2s
重新部署是3个副本增加了一个,先创建后删除,所以在重新部署时不会影响到用户的使用。在很多时候需要重启但是白天又不弄重启,所以使用restart重新部署可以使用定时任务,这样也不用熬夜了。
注意,我这是新版本,如果是老版本deployment wulaoer-service 就会改成deployment/wulaoer-service
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏