文档

Kubernetes 环境部署运维

更新时间:

本文主要介绍 Kubernetes 环境部署运维,支持滚动升级、分批发布部署策略,支持环境部署、扩缩容、回滚等操作。

1. 部署策略

云效 AppStack Kubernetes 环境部署支持滚动升级、分批发布策略,支持设置批次之间暂停策略、部署超时时间等。进入应用,找到目标环境 -> 环境设置 -> 部署设置,可以按需设置部署策略。

image

AppStack 提供「托管复本数」和「非托管复本数」两种部署模式:

说明
  • 托管复本数:针对环境下 Deployment 工作负载,「托管复本数」模式云效 AppStack 将对 Deployment replicas 进行强管控,部署策略中指定的「目标实例数」为准进行 patch 下发,支持通过环境扩缩容操作调整复本数。该模式下请避免通过其他工具或平台操作资源,以免环境基线不一致导致部署失败。

  • 非托管复本数:针对环境下 Deployment 工作负载,「非托管复本数」模式云效 AppStack 将使用应用编排+环境变量组渲染后的 YAML直接下发部署, 以渲染后的 YAML 中的 replicas 为准,不做复本数强管控。HPA等弹性水位场景建议使用该模式。

1.1 「托管复本数」模式

AppStack 环境部署「托管复本数」模式,对本应用、本环境下的 Deployment 资源生效:

  • 目标实例数:期望的 Deployment replicas 复本数,请填写正整数。指定目标实例数后,会使用该数量 patch 到部署 YAML 中(以该数量替换 YAML 中的 replicas 值),以指定的目标实例数下发部署。后续可以通过环境上的扩缩容操作调整复本数。

  • 部署策略

    • 滚动升级:以 K8s 原生滚动方式部署,逐步更新应用 Pod 实例,直到新版本数量达到指定的目标实例数

    • 分批发布

      • 分批数量:发布的分批数,请填写正整数(需要小于等于目标实例数)。

      • 分批详情:每批次的更新的 Pod 数量,各批次数量相加之和等于目标实例数

      • 暂停策略

        • 不暂停:不暂停,每批次自动开始;上一批次结束,下一批次自动执行。

        • 首批暂停:第 1 批部署结束后暂停,需要手动点击「继续」触发第 2 批;第 3 及后续批次自动执行(如有)。

        • 每批暂停:第 1 批部署结束后暂停,后续每一批次都需要手动点击「继续」触发。

      • 超时时间:每批次超时时间,单位分钟,支持 1-30 的正整数。

image

以下示例,目标实例数 3,分 2 批,第一批 1 个复本,第二批 2 个复本,单批次超时时间 10 分钟。可以按批次查看部署进度。

image

以下示例,目标实例数 3,滚动升级,逐步更新应用 Pod 实例。

image

1.2 「非托管复本数」模式

AppStack 环境部署「非托管复本数」模式,对本应用、本环境下的 Deployment 资源生效:

  • 部署策略:

    • 滚动升级:以 K8s 原生滚动方式部署,逐步更新应用 Pod 实例。

    • 分批发布:支持按比例分批发布。

      • 分批数量:发布的分批数,请填写正整数。

      • 分批详情:每批次的更新的 Pod 数量比例,各批次比例相加之和需要等于100%。

      • 暂停策略

        • 不暂停:不暂停,每批次自动开始;上一批次结束,下一批次自动执行。

        • 首批暂停:第 1 批部署结束后暂停,需要手动点击「继续」触发第 2 批;第 3 及后续批次自动执行(如有)。

        • 每批暂停:第 1 批部署结束后暂停,后续每一批次都需要手动点击「继续」触发。

      • 超时时间:每批次超时时间,单位分钟,支持 1-30 的正整数。

说明
  • 若部署编排 YAML 中指定了 replicas: n,则按策略逐步更新新版本 Pod 数量达到 n。

  • 若部署编排 YAML 中未指定 replicas,且 K8s 集群上已存在该 Deployment,且集群上复本数为 m,则按策略逐步更新新版本 Pod 数量达到 m。

image

2. 部署运维操作

2.1 部署

应用环境部署通常用于应用制品或配置有变更时去更新环境服务。

提交部署单

  • 进入 应用-环境 ,在环境列表找到目标环境卡片,点击 立即部署 ;也可以进入目标环境详情页面,点击右上角操作区域的 部署 按钮。

  • 第一步:填写部署内容

    • 工单名称:名单名称,默认填充:${秒级时间戳}-部署,可按需修改。

    • 部署版本号:部署版本号,自动生成:${秒级时间戳}-${三位毫秒},不可修改。

    • 镜像列表:镜像由Kubernetes 部署编排里定义的镜像占位符决定,可直接输入镜像地址(请确保待部署到的 K8s 集群可直接拉取到镜像)。

    • 自定义参数:自定义参数由Kubernetes 部署编排定义,当占位符 部署时可改 开关打开时,可以在提交部署单时动态修改取值。

  • 第二步:确认部署选项

    • 展示当前环境待部署的所有组件列表,点击 YAML 可以查看各个组件的部署配置

    • 特别的,针对 Deployment 工作负载类型的组件,可以查看部署策略,如果需要可前往 环境设置-部署设置 调整部署策略,详见 1.部署策略。

  • 点击 提交 部署单,生成部署工单,跳转工单详情页面。

image

image

观测部署过程

  • 上述提交部署单后,跳转部署单详情页面,可以观测部署进度。也可以从 应用-工单 列表页面,找到目标部署单,点击进入工单详情观测进度。

    • 工单概要:展示 工单名称工单ID工单类型提交人提交时间结束时间等基本信息。

    • 环境部署流程:按顺序展示当前环境部署的所有组件,部署内容和部署顺序由应用编排决定(云效 AppStack 当前按照 helm chart 默认顺序执行),点击卡片可以查看具体资源的部署详情。

    • 资源部署详情:展示指定资源的部署详情。

      • 非工作负载

        • 展示 资源名部署版本部署配置、以及其他资源类型相关信息。

      • 工作负载(当前仅支持Deployment)

        • 基本信息展示 资源名制品目标实例数部署策略部署配置等。

        • 部署进度可以按批次展示实例部署状态,点击实例块可以查看Pod更多 基本信息关键事件,还可以查看容器日志等。

image

image

暂停/继续

  • 部署过程中,可以点击 暂停 当前任务,可用于异常情况下暂停任务观察服务状态。

  • 已手动暂停的任务或者受暂停策略控制暂停的任务,可以点击 继续 执行任务。

终止

  • 部署过程中,可以手动 终止 当前部署任务,可选 置为成功置为失败 。可用于一些不需要继续部署的特殊场景:如,SRE通过手工运维集群,已部署应用服务到目标版本,无需工单继续处理的情况。

回退

  • 部署过程中,可以点击 回退 ,回退当前环境到上次部署状态。点击 回退 后,当前部署任务将取消,并生成新的回退任务,回退任务将使用环境的最近的部署基线进行一次重新部署。 可用于当前部署版本不符合预期,需要快速恢复环境到上次可用状态的场景。

查看执行日志

  • 点击 执行日志 可以查看工单部署的全部详细日志,可以用于问题追溯和排查。

image

2.2 扩缩容

环境扩缩容通常用于环境工作负载过高或过低时,动态调整环境对外提供服务实例数。仅「托管复本数」模式支持在环境上提交扩缩容;「非托管复本数」模式请通过调整 YAML 中的 replicas 调整复本数。

提交扩缩单

  • 进入应用-环境 ,进入目标环境详情页面,点击右上角操作区域的 扩缩 按钮。

  • 填写扩缩单参数

    • 工单名称:默认填充:${秒级时间戳}-部署,可按需修改。

    • 版本号:展示当前环境最近一次部署的版本号。

    • 组件信息:展示当前环境待扩缩的工作负载组件信息。

      • 镜像列表:环境最近一次部署的镜像,只读不可改。

      • 目标实例数:本次扩缩操作期望达到的环境目标实例数。

      • 部署策略:指定扩缩容策略,可选滚动升级分批发布

        • 滚动升级:以 K8s 原生滚动方式扩缩,逐步新增或缩减 Pod 实例。

        • 分批发布

          • 分批数量:根据待扩容/缩容的实例数(增量),划分合适的分批数,以及每批扩/缩数量。

          • 分批详情:根据待扩容/缩容的实例数、分批数,划分每批扩/缩实例数量。

          • 暂停策略 :针对待扩缩的批次可选暂停策略,支持 不暂停首批暂停每批暂停 三种策略。

          • 超时时间:每批次超时时间,单位分钟,支持 1-30 的正整数。

  • 点击 提交 ,生成扩缩容工单,跳转工单详情页面。

image

观测扩缩过程

  • 扩缩单详情页,针对环境下的工作负载进行实例数扩缩容,可以查看实例扩缩进度。

image

  • 如果环境部署策略为分批发布,则环境扩缩容成功后会自动调整分批详情,调整批次数以及每批次数量,以适应下一次环境部署。

image

2.3 回滚

回滚可一次性将环境快速恢复到目标版本,适用于新版本发布后不符合预期,需要回滚到最近可用版本场景。回滚相当于使用历史版本进行一次重新部署,请谨慎操作!

提交回滚单

  • 进入 应用-版本 ,在版本列表找到目标回滚版本,点击 回滚 提交回滚工单;或者进入目标环境详情,点击右上角操作区域 回滚 提交回滚工单。

  • 填写回滚单参数

    • 工单名称:默认填充:${秒级时间戳}-回滚,可按需修改。

    • 回滚版本:选择待回滚到的版本。

    • 组件信息:展示目标回滚版本下环境待回滚的组件,其中工作负载类型展示待回滚的 镜像列表目标实例数, 可按实际情况调整回滚策略(部署策略),指定分批数和暂停策略。 请仔细核对待回滚的组件信息是否符合预期。

  • 点击 提交 ,生成回滚工单,跳转工单详情页面。

image

观测回滚过程

  • 回滚进度展示老版本和目标版本,目标版本为环境回滚到的版本,其他同观测 K8s 环境部署过程。

image

2.4 环境删除

  • 当环境不需要使用时,通常适用于开发、测试等线下环境联调测试完毕后,不需要再使用了,可以使用环境删除功能释放资源。 详见 删除环境