《阿里云产品四月刊》—享道出行:容器弹性技术驱动下的智慧出行稳定性实践(4)

简介: 阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代

本文来源于阿里云社区电子书《阿里云产品四月刊》


《阿里云产品四月刊》—享道出行:容器弹性技术驱动下的智慧出行稳定性实践(3)https://developer.aliyun.com/article/1554123

 

在享道的集群架构中,存在采集微服务日志的场景,日志采集器会在 ECS 节点上通过DaemonSet 方式部署 Agent,但虚拟节点不是真实节点,不支持运行 DaemonSet Pod,如何让调度到虚拟节点的 Pod 也支持上述 Agent 的同等能力呢?答案是向虚拟节点 Pod 注入 Sidecar 容器。

 

在实施过程中,我们希望做到:

 

  • 维护一份 Deployment 发布模板。在资源调度部署时,自动对底层 ECSECI

 

区分,当 Pod 被调度到 ECS 节点时,无需注入 Sidecar 容器,当 Pod 被调度到虚拟节点时,则自动向 Pod 中注入 Sidecar 容器,从而实现通过维护一份Deployment 发布模版,即可同时满足不同架构下的兼容性需求。

 

  • 对已有存量业务入侵尽可能小。根据软件设计开闭原则,应该对修改关闭,避免改  动线上已经运行稳定的存量业务DaemonSet),只增加新的或对新增内容做改变。

 

使用一个 Deployment 在原生 K8s 架构中无法做到,原因是添加 Sidecar 容器需要修改 Pod Spec,而原生 K8s 架构中 Pod Spec 落到 etcd 之后就不允许修改了,但Pod 是否调度到虚拟节点是在 Pod Spec 落到 etcd 后由调度器决定的。因此,使用OpenKruise 原生 SidecarSet,因为采用 Admission Webhook 机制,在 Pod 创建阶段通过 Label 的匹配所有符合条件的 Pod,此时 Pod 还未调度到虚拟节点,无法仅对调度到虚拟节点的 Pod 生效。

 

注:SidecarSet 是阿里云开源的云原生应用自动化引擎 OpenKruise 的核心功能之一。使用 SidecarSet 可以为集群中创建的符合条件的 Pod 自动注入 Sidecar 容器,实现 Sidecar 容器(如监控、日志等 agent)的定义和生命周期与业务容器解耦。

 

虚拟节点支持 SidecarSet 就是专门用于解决该问题。借助虚拟节点组件(ACK Virtual Node)仅为调度到虚拟节点上的 Pod 自动注入 Sidecar 容器,来解耦虚拟节点 Pod 的 Sidecar 容器与业务容器。其原理如下图所示:

 

 

image.png

 

通过标签   Serverless.alibabacloud.com/virtual-node:"true"  指定, 该标签会在 Pod 确定调度到虚拟节点后自动打上。同时,该方案与 OpenKrusie 原生 SidecarSet 完全兼容,对于后续 Sidecar 容器的升级、运维等操作,仍可以继续使用 OpenKrusie 原生 SidecarSet 实现。



自定义弹性指标

 

如上文所述,基于  CPU/内存的弹性指标无法同真实业务工作复杂完全拟合。很多场景下,用户期望根据自定义指标对应用进行扩缩容。AHPA 所提供的 External Metrics 机制,结合  alibaba-cloud-metrics-adapter  组件,可以为应用提供更丰富的扩缩容机制。

 

业务价值

 

当前享道出行已经规模化上线智能容器弹性能力,在保证稳定性的前提下,大大节省了  资源成本,并能很好地应对突发流量。如图所示:当阈值设置为 50,指标有到 50 的

 

趋势时,即会触发弹性扩容,能够更好地应对突发流量,保障业务稳定性的同时,也能  够实现可观的降本效果。

image.png

 

作者:郑嘉扬、何杉


相关文章
|
4月前
|
存储 容器
46.[HarmonyOS NEXT RelativeContainer案例三] 打造自适应容器:内容驱动的智能尺寸调整技术
在HarmonyOS NEXT的UI开发中,创建能够根据内容自动调整尺寸的容器是实现灵活布局的关键。RelativeContainer结合自适应尺寸设置,可以实现内容驱动的智能尺寸调整,使UI更加灵活且易于维护。本教程将详细讲解如何创建自适应尺寸的RelativeContainer,帮助你掌握这一实用技术。
128 5
|
22天前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
180 2
|
3月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
110 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
2月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
2月前
|
运维 测试技术 Docker
Docker:轻量级容器化技术革命
Docker:轻量级容器化技术革命
|
6月前
|
弹性计算 Java Maven
从代码到容器:Cloud Native Buildpacks技术解析
Cloud Native Buildpacks(CNB)是一种标准化、云原生的容器镜像构建系统,旨在消除手动编写Dockerfile,提供可重复、安全且高效的构建流程。它通过分层策略生成符合OCI标准的镜像,实现应用与基础镜像解耦,并自动化依赖管理和更新。阿里云应用管理支持通过CNB技术一键部署应用至ECS,简化构建和运行流程。
|
7月前
|
Ubuntu 关系型数据库 MySQL
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
291 16
|
7月前
|
存储 虚拟化 Docker
|
7月前
|
开发工具 虚拟化 git
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具
|
7月前
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
239 0
课时5:阿里云容器服务:最原生的集成Docker和云服务

热门文章

最新文章