使用Deployment升级Pod,只需要定义Pod的最终状态,k8s会为你执行必要的操作,虽然能够使用命令 # kubectl rolling-update 完成升级,但它是在客户端与服务端多次交互控制RC完成的,所以REST API中并没有rolling-update的接口,这为定制自己的管理系统带来了一些麻烦。
Deployment拥有更加灵活强大的升级、回滚功能。
目前,Replica Set与RC的区别只是支持的selector不同,后续肯定会加入更多功能。Deployment使用了Replica Set,是更高一层的概念。除非需要自定义升级功能或根本不需要升级Pod,一般情况下,我们推荐使用Deployment而不直接使用Replica Set。
使用子命令create,创建Deployment
# kubectl create -f deployment.yaml --record注意–record参数,使用此参数将记录后续创建对象的操作,方便管理与问题追溯
使用子命令edit,编辑spec.replicas/spec.template.spec.container.image字段,完成deployment的扩缩容与滚动升级(这要比子命令rolling-update速度快很多)
# kubectl edit deployment hello-deployment使用rollout history命令,查看Deployment的历史信息
# kubectl rollout history deployment hello-deployment上面提到RC在rolling-update升级成功后不能直接回滚,而使用Deployment却可以回滚到上一版本,但要加上–revision参数,指定版本号
# kubectl rollout history deployment hello-deployment --revision=2使用rollout undo回滚到上一版本
# kubectl rollout undo deployment hello-deployment使用–to-revision可以回滚到指定版本
# kubectl rollout undo deployment hello-deployment --to-revision=2 三、总结通过对比,我们发现新的Replica Set、Deployment,比RC要强大易用很多。
Docker中部署Kubernetes
Kubernetes集群部署
OpenStack, Kubernetes, Mesos 谁主沉浮
在Ubuntu下部署Kubernetes集群