全部产品
云市场

Kubernetes分批发布

更新时间:2018-11-12 15:55:41

本文将介绍如何在云效中使用分批发布功能部署Kubernetes下的应用程序

前置条件

  • 已在当前企业中导入可用的Kubernetes集群,未导入的用户可以参考文档导入Kubernetes集群

分批发布原理

云效中分批发布原理如下所示:

分批发布原理

在执行分批发布过程中,云效会自动为当前Service关联的Deployment实例创建副本,并通过控制2个版本Deployment的Replicas数量实现,应用的分批发布。 在整个发布过程中Service的流量会同时转发到2个版本的Deployment实例中。在应用升级完成后,就版本的Deployment会自动删除。

部署配置

进入到环境的部署配置页面,切换当前环境的部署方式到Kubernetes部署,如下所示:

kubernetes分批发布部署配置

配置项 说明
发布策略 选择当前环境的发布策略,目前支持Kubernetes的原生滚动升级以及云效的分批发布策略
发布批次 发布分批总数,当发布批次数>当前应用实际的副本数时,已当前副本数为准
集群 当前应用发布的目标Kubernetes集群
命名空间 当前服务所在的命名空间
服务 当前部署所对应的Service对象
容器 如果当前Service已关联Deployment,那需要指定升级的Container对应的名称,用以兼容单Pod多容器的模式

分批发布策略:

  • 分批发布第一批暂停:按批次对应用进行升级,并且在第一批次执行完成后,暂停。等待用户确认是否继续后续批次的发布,后续批次发布过程不再暂停。
  • 分批发布每批暂停:按批次对应用进行升级,在每批发布执行完成后都需要用户确认是否继续下一批次的任务

执行分批发布

在触发部署阶段后,用户可以通过流水线的部署单按钮进行部署单

发布单

进入到发布单后,用户可以查看当前应用的发布状态:

发布单

在发布单页面中,用户可以执行以下操作:

操作 说明
继续 继续执行下一批次发布任务
回滚 回滚当前应用到部署前状态

常见问题

Q: 第一次部署部署应用程序时,为什么没有分批暂停?

A:当用户首次部署应用时,由于当前服务(Service)未关联任何的部署组(Deployment)实例,因此发布过程不会进行分批。云效会直接按照当前部署配置中的发布批次数作为应用的副本数,并直接初始化Deployment资源

Q:当Deployment的Replicas副本数为1时,为什么流水线会部署失败?

A:当Service关联Deployment的副本数为1时,不满足分批发布的要求,请手动调整Deployment的副本数后重试

Q:为什么实际的分批数和我设置的分批数不同?

A:为了避免分批发布对用户部署的影响,当分批发布数大于当前用户应用的副本数时,会以当前已有的副本数,作为分批发布的实际批次数

Q: 为什么分批发布时,应用访问请求可能会出现异常

A:默认Service在进行流量转发时只要Pod状态为Running就会转发流量,而应用可能还在启动中。 请为Deployment配置Readiness探针