《阿里云产品四月刊》—享道出行:容器弹性技术驱动下的智慧出行稳定性实践(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

 

作者:郑嘉扬、何杉


相关文章
|
3天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
12 2
|
3天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
5天前
|
运维 持续交付 Docker
深入理解Docker容器化技术
深入理解Docker容器化技术
|
9天前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
184 7
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
1天前
|
安全 持续交付 云计算
揭秘云计算中的容器化技术及其优势
揭秘云计算中的容器化技术及其优势
5 1
|
2天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
4天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
|
5天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
6天前
|
存储 Kubernetes 调度
基于容器化技术的性能优化实践
基于容器化技术的性能优化实践
15 3
|
13天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
43 4