在阿里云容器服务Kubernetes上使用分批发布

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 前言 Kubernetes作为非常流行的容器编排引擎已经逐渐成为容器交付的标准,为了解决标准化交付的问题,Kubernetes抽象了多种概念来代表不同的交付内容。 例如,不同应用场景的服务载体可以通过Deployment、DaemonSet、StatefulSet、CronJob来抽象;网络接入层可以通过Service进行抽象;服务配置可以通过ConfigMap或者Secret进行抽象等等。

前言

Kubernetes作为非常流行的容器编排引擎已经逐渐成为容器交付的标准,为了解决标准化交付的问题,Kubernetes抽象了多种概念来代表不同的交付内容。

lALPBY0V48AYTNTNAWrNAnQ_628_362_png_620x10000q90g

例如,不同应用场景的服务载体可以通过Deployment、DaemonSet、StatefulSet、CronJob来抽象;网络接入层可以通过Service进行抽象;服务配置可以通过ConfigMap或者Secret进行抽象等等。有了多种交付内容的抽象,开发者可以很简单将自身的应用交付进行拆分,变成多种抽象的组合,实现代码即交付。

分批发布

一个标准的应用可以抽象为网络、服务载体与存储,而一次应用的变更通常主要是针对服务载体进行的变更。但是如果我们只变更服务载体而操作网络会导致应用可能会出现服务中断等现象。为了解决上述的场景,我们通常会推荐使用不同的发布方式来解决,例如蓝绿发布解决零宕机发布的问题、金丝雀发布解决无差别快速验证的问题。

lALPBY0V48AYTFjMk80B_A_504_147_png_620x10000q90g

但是这些发布方式在Kubernetes中怎么使用呢?因为Kubernetes中抽象是非常原子的,而通常带有发布方式的变更过程需要组合服务载体和网络两种资源的变化。在标准的Kubernetes中是无法支持的,在开源社区中Helm或许是一个答案,而今天我们要给大家介绍一种更简单的方案,阿里云容器服务Kubernetes中的分批发布功能。(注意:目前仅支持1.9.3及以上的版本。)

分批发布顾名思义是通过分批的方式进行应用零宕机快速验证的方式。分批发布功能是基于Kubernetes中的CRD(CustomResourceDefinition)进行定义的,包含一个Service和一个StatefulSet,分批发布的过程同时操作了服务载体和网络,实现了应用的分批次发布、接入层快速变更、快速验证、发布继续、发布回滚、历史版本回滚等功能。

image

上图是一个分三批的分批发布流程,在发布时第一批次的Pod会进行新版本的变更,当第一批次的所有Pod都处在运行态的时候,service会进行流量的切换,将所有流量打到第一批次的Pod上面,进行快速验证,如果没有问题则继续发布,如果有问题可以立即进行回滚,整个过程无流量中断。

操作步骤

  1. 控制台选择左侧菜单中的发布,右侧点击创建分批发布按钮。如果按钮是灰色的,可以参考升级连接进行升级。lALPBY0V48Aku4jNA9PNBZw_1436_979_png_620x10000q90g
  2. 填写相关配置
    lALPBY0V48AkvLjNA9PNBaA_1440_979_png_620x10000q90g

此时查看分批发布详情,可以看到4个nginx Pod已经都启动完毕,关联的服务也生成完毕,发布处在未开始状态。
image_20180806153100344

  1. 接下点击右上角的新建变更,来进行一次分批发布的变更
    image_20180806153221908
  2. 再次查看分批发布详情,可以看到未开始中的Pod为2个,已完成的Pod为2个,表示分批发布第一个批次已完成。分批发布的整体状态处在 等待部署完成 (总共 2 个批次,当前处在第 1 个批次,当前批次状态为已完成)。
    image_20180806153413696
  3. 此时点击继续按钮会发布下一个批次,如果点击回滚按钮,那么此时会回滚掉刚才的版本。当发布完成后。点击历史,可以进行历史版本的回滚。
    image_20180806160131569

总结

分批发布功能主要是为了解决快速无流量损失的验证,与蓝绿发布相比更节省资源,目前暂时只支持页面操作,后续会开放yaml文件编辑,支持更复杂的操作。

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
431 108
|
15天前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
125 2
|
16天前
|
Kubernetes Devops Docker
Kubernetes 和 Docker Swarm:现代 DevOps 的理想容器编排工具
本指南深入解析 Kubernetes 与 Docker Swarm 两大主流容器编排工具,涵盖安装、架构、网络、监控等核心维度,助您根据团队能力与业务需求精准选型,把握云原生时代的技术主动权。
126 1
|
6月前
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
231 0
课时5:阿里云容器服务:最原生的集成Docker和云服务
|
6月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
144 0
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
6月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
4月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
157 9
|
4月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
6月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
613 33

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版
  • 推荐镜像

    更多