多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
部署服务的时候我们希望服务的更新对用户是无感知的,deployment提供了很 好的服务。 ## 滚动升级 - 在`spec`下加入以下配置 ~~~yaml replicas: 2 minReadySeconds: 5 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 ~~~ * 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处于无法服务的状态。 ## 回滚 - 查看升级历史 ~~~shell kubectl rollout history deployment nginx-deploy ~~~ > 执行Deployment升级的时候最好带上`record`参数,可以方便查看历史信息 - 查看历史信息 ~~~shell kubectl rollout history deployment nginx-deploy --revision=3 ~~~ - 回滚到指定版本 ~~~shell kubectl rollout undo deployment nginx-deploy --to-revision=2 ~~~