阿里云容器服务差异化 SLO 混部技术实践

Posted 阿里巴巴云原生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云容器服务差异化 SLO 混部技术实践相关的知识,希望对你有一定的参考价值。

# milli-core # bytes alibabacloud.com/reclaimed-memory: 2048


03 技术内幕

Cloud Native

1
 CPU 资源质量


CPU Burst

Kubernetes 为容器资源管理提供了 Limit(约束)的语义描述,对于 CPU 这类分时复用型的资源,当容器指定了 CPU Limit,操作系统会按照一定的时间周期约束资源使用。例如对于 CPU Limit = 2 的容器,操作系统内核会限制容器在每 100 ms 周期内最多使用 200 ms 的 CPU 时间片。


下图展示了一台 4 核节点、某 CPU Limit = 2 的 Web 服务类容器,在收到请求(req)后各线程(Thread)的 CPU 资源分配情况。可以看出,即使容器在最近 1s 内整体的 CPU 利用率较低,受 CPU Throttled 机制的影响,Thread 2 仍需要等待下一个周期才能继续将 req 2 处理完成,进而导致请求的响应时延(RT)变大,这通常就是容器 RT 长尾现象严重的原因之一。


CPU Burst 机制可以有效解决延迟敏感性应用的 RT 长尾问题,允许容器在空闲时积累一些 CPU 时间片,用于满足突发时的资源需求,提升容器性能表现,目前阿里云容器服务 ACK 已经完成了对 CPU Burst 机制的全面支持。对于尚未支持 CPU Burst 策略的内核版本,ACK 也会通过类似的原理,监测容器 CPU Throttle 状态,并动态调节容器的 CPU Limit,实现与内核 CPU Burst 策略类似的效果。


CPU 拓扑感知调度

随着宿主机硬件性能的提升,单节点的容器部署密度进一步提升,进程间的 CPU 争用,跨 NUMA 访存等问题也逐渐加剧,严重影响了应用性能表现。在多核节点下,进程在运行过程中经常会被迁移到其不同的核心,考虑到有些应用的性能对 CPU 上下文切换比较敏感,kubelet 提供了 static 策略,允许 Guarantee 类型 Pod 独占 CPU 核心。但该策略尚有以下不足之处:

  • static policy 只支持 QoS 为 Guarantee 的 Pod,其他 QoS 类型的 Pod 无法使用。

  • 策略对节点内所有 Pod 全部生效,而 CPU 绑核并不是”银弹“,需要支持 Pod 粒度的精细化策略。

  • 中心调度并不感知节点实际的 CPU 分配情况,无法在集群范围内选择到最优组合。

  • 阿里云容器服务 ACK 基于 Scheduling framework 实现了拓扑感知调度以及灵活的绑核策略,针对 CPU 敏感型的工作负载可以提供更好的性能。ACK 拓扑感知调度可以适配所有 QoS 类型,并支持在 Pod 维度按需开启,同时可以在全集群范围内选择节点和 CPU 拓扑的最优组合。

    弹性资源限制(reclaimed-resource)

    如资源模型中的描述,节点 reclaimed-resource 的资源总量会跟随高优先级容器实际的资源用量动态变化,在节点侧,为了保障 LS 容器的运行质量,BE 容器实际可用 CPU 数量同样受 LS 容器负载的影响。


    如上图所示,当 LS 容器资源用量上涨时,受负载水位红线的限制,BE 容器可用的 CPU 数量相应减少,在系统层面会体现在容器 cgroup 分组的 CPU 绑定范围,以及 CPU 时间片的分配限制。

    内核Group Identity


    Alibaba Cloud Linux 2 从内核版本 kernel-4.19.91-24.al7 开始支持 Group Identity 功能,通过为容器设置不同的身份标识,可以区分容器中进程任务的优先级。内核在调度不同优先级的任务时有以下特点:

  • 高优先级任务的唤醒延迟最小化。

  • 低优先级任务不对高优先级任务造成性能影响。主要体现在:

  • 低优先级任务的唤醒不会对高优先级任务造成性能影响。

  • 低优先级任务不会通过 SMT 调度器共享硬件 unit(超线程场景)而对高优先级任务造成性能影响。


  • Group Identity 功能可以对每一个容器设置身份标识,以区分容器中的任务优先级。Group Identity 核心是双红黑树设计,在 CFS(Completely Fair Scheduler)调度队列的单红黑树基础上,新增了一颗低优先级的红黑树,用于存放低优先级任务。


    系统内核在调度包含具有身份标识的任务时,会根据不同的优先级做相应处理。具体说明如下表:


    更多关于内核 Group Identity 能力的详细描述,可参见官网文档:
    https://help.aliyun.com/document_detail/338407.html

    LLC 及 MBA 隔离

    在神龙裸金属节点环境,容器可用的 CPU 缓存(Last Level Cache,LLC)及 内存带宽(Memory Bandwidth Allocation,MBA)可以被动态调整。通过对 BE 容器进程的细粒度资源限制,可以进一步避免对 LS 容器产生性能干扰。

    2
     内存资源质量


    全局最低水位线分级


    在 Linux 内核中,全局内存回收对系统性能影响很大。特别是时延敏感型业务(LS)和资源消耗型(BE)任务共同部署时,资源消耗型任务时常会瞬间申请大量的内存,使得系统的空闲内存触及全局最低水位线(global wmark_min),引发系统所有任务进入直接内存回收的慢速路径,进而导致延敏感型业务的性能抖动。在此场景下,无论是全局 kswapd 后台回收还是 memcg 后台回收,都将无法处理该问题。


    基于上述场景下的问题,Alibaba Cloud Linux 2 新增了 memcg 全局最低水位线分级功能。在 global wmark_min 的基础上,将 BE 的 global wmark_min 上移,使其提前进入直接内存回收。将 LS 的 global wmark_min 下移,使其尽量避免直接内存回收。这样当 BE 任务瞬间申请大量内存的时候,会通过上移的global wmark_min 将其短时间抑制,避免 LS 发生直接内存回收。等待全局 kswapd 回收一定量的内存后,再解除 BE 任务的短时间抑制。


    更多关于内核全局内存最低水位线分级能力的详细描述,可参见官网文档:
    https://help.aliyun.com/document_detail/169537.htm

    后台异步回收

    在全局最低水位线分级后,LS 容器的内存资源不会被全局内存回收影响,但当容器内部紧张时会触发直接内存回收,直接内存回收是发生在内存分配上下文的同步回收,因此会影响当前容器中运行进程的性能。


    为了解决这个问题,Alibaba Cloud Linux 2 增加了容器粒度的后台异步回收功能。该功能的实现不同于全局 kswapd 内核线程的实现,并没有创建对应的 memcg kswapd 内核线程,而是采用了 workqueue 机制来实现,并在 cgroup v1 和 cgroup v2 两个接口中,均新增了控制接口(memory.wmark_ratio)。


    当容器内存使用超过 memory.wmark_ratio 时,内核将自动启用异步内存回收机制,提前于直接内存回收,改善服务的运行质量。

    更多关于容器内存后台异步回收能力的描述,可参见官网文档:
    https://help.aliyun.com/document_detail/169535.html

    3
     基于单机资源水位的驱逐


    CPU 资源满足度

    前文介绍了多种针对低优先级离线容器的 CPU 资源压制能力,可以有效保障 LS 类型业务的资源使用。然而在 CPU 被持续压制的情况下,BE 任务自身的性能也会受到影响,将其驱逐重调度到其他空闲节点反而可以使任务更快完成。此外,若 BE 任务在受压制时持有了内核全局锁这类资源,CPU 持续无法满足可能会导致优先级反转,影响 LS 应用的性能。

    因此,差异化 SLO 套件提供了基于 CPU 资源满足度的驱逐能力,当 BE 类型容器的资源满足度持续低于一定水位时,使用 reclaimed 资源的容器会按从低到高的优先级被依次驱逐。

    内存阈值水位


    对于混部场景的内存资源,即便可以通过多种手段促使内核提前回收 page cache,优先保障 LS 容器的资源需求。但在内存资源超卖情况下,依然存在整机 RSS 内存用满导致 OOM 的风险。ACK 差异化 SLO 套件提供了基于内存阈值的驱逐能力,当整机 Memory 使用率水位超过阈值时,按优先级依次对容器进行 kill 驱逐,避免触发整机 OOM,影响高优容器的正常运行。


    04

    案例实践

    Cloud Native

    1
     使用 CPU Brust 提升应用性能


    我们使用 Apache HTTP Server 作为延迟敏感型在线应用,通过模拟请求流量,评估 CPU Burst 能力对响应时间(RT)的提升效果。以下数据分别展示了 Alibaba Cloud Linux 2、CentOS 7 在 CPU Burst 策略开启前后的表现情况:


    比以上数据可得知:

  • 在开启 CPU Burst 能力后,应用的 RT 指标的 p99 分位值得到了明显的优化。

  • 对比 CPU Throttled 及利用率指标,可以看到开启 CPU Burst 能力后,CPU Throttled 情况得到了消除,同时 Pod 整体利用率基本保持不变。

  • 2
     通过应用混部提升集群利用率


    我们以“Web服务+大数据”场景为例,选择了 nginx 作为 Web 服务(LS),与 spark benchmark 应用(BE)混部在 ACK 集群的同一节点,介绍 ACK 差异化 SLO 套件在实际场景下的混部效果。


    对比非混部场景下的基线,以及差异化 SLO 混部场景下的数据,可以看出 ACK 差异化 SLO 套件可以在保障在线应用服务质量的同时(性能干扰 < 5%),提升集群利用率(30%)

  • 对比“nginx 独立运行”与“差异化 SLO 混部”的 nginx 时延数据,RT-p99 只有4.4%左右的性能下降。

  • 对比“spark 独立运行”与“差异化 SLO 混部”的 BE 任务运行时长,即便在 BE 任务频繁受到压制的情况下,总运行时间只上升了 11.6%。


  • 3
     大数据集群提升资源利用率


    相较于延时敏感型的在线服务,大数据类型应用对资源质量的要求并不敏感,“差异化 SLO 混部”可以进一步提升大数据集群的容器部署密度,提高集群资源利用率,缩短作业平均运行时间。我们以 Spark  TPC-DS 评测集为例,介绍 ACK 差异化 SLO 套件对集群资源利用率的提升效果。


    以下数据展示了“差异化 SLO”功能在开启前后,各项数据指标的对比情况:

  • “差异化 SLO”功能开启后,通过集群 reclaimed-resource 资源超卖模型,集群内可以运行更多的 Spark 容器。

  • 集群 CPU 平均利用率由 49% 提升至 58%;资源的充分利用使得评测集作业的总运行时间下降了 8%。


  • 05

    总结

    Cloud Native


    阿里云容器服务 ACK 支持差异化 SLO 的相关功能将在官网陆续发布,各项功能可独立用于保障应用的服务质量,也可在混部场景下共同使用。实践表明,差异化 SLO 技术可以有效提升应用性能表现。特别是在混部场景下,ACK 差异化 SLO 混部技术可以将集群资源利用率提升至相当可观的水平;同时,针对在线时延敏感型服务,该技术可以将混部引入的性能干扰控制在 5% 以内。


    点击阅读原文,即可查看阿里云容器服务 ACK 支持差异化 SLO 各项功能的详细介绍!



    了解更多相关信息,请扫描下方二维码或搜索微信号(AlibabaCloud888)添加云原生小助手!获取更多相关资讯!



    云原生之路:容器技术落地最佳实践


    阿里妹导读:随着容器技术的快速发展和广泛应用,毫无疑问云原生技术是未来发展的必然趋势。作为国内最早布局容器技术的阿里云,无论在技术还是产品上,都取得了极大的成果。阿里云资深技术专家易立通过阿里云容器服务,分享容器技术落地的最佳实践,希望能够帮助同学们更好地理解容器技术和云原生理念,合理地设计上云架构,充分发挥云的价值。

    文末推荐:2020 阿里巴巴研发效能峰会。


    没有集装箱,就没有全球化。——《经济学人》


    什么是容器?

    容器的英语是 Container,它的意思是集装箱。我们知道,经济全球化的基础就是现代运输体系,而其核心正是集装箱。集装箱的出现实现了物流运输的标准化,自动化,大大降低了运输的成本,使得整合全球的供应链变为可能。这就是著名经济学人谈到的“没有集装箱,就没有全球化”。

    集装箱背后的标准化、模块化的理念也在推进建筑业的供应链变革。在最近,疫情爆发之后。10 天 10 夜,在武汉火神山,一个可以容纳上千床位的专科医院平地而起,在抗疫过程中发挥的重要作用。整个医院都是采用集装箱板房吊装。模块化的病房设计,预置了空调、消杀、上下水等设施,极大加速了施工速度。

    容器的通俗理解

    云原生之路:容器技术落地最佳实践


    软件集装箱 ”容器技术“ 也在重塑整个软件供应链。容器作为一种轻量化的操作系统虚拟化技术,和和传统的物理机、虚拟化技术和使用方式有什么不同呢?打个比喻:

    传统物理机就是独栋大别墅



    虚拟机就是联排住宅



    容器就是集装箱板房



    容器的价值

    在过去几年中,容器技术得到了越来越广泛的应用。其中最主要的 3 个核心价值是:

    敏捷

    天下武功唯快不破。在企业数字化转型时代,每个企业都在面临着新兴业务模式的冲击和众多的不确定性。一个成功的企业不是看他现在规模有多大,过去的战略有多成功,而是要看他是否有能力持续创新。容器技术提升了企业的 IT 架构的敏捷性,从而提升了业务敏捷性,可以加速业务创新。比如疫情期间,教育、视频、公共健康等行业的在线化出现了爆发性高速增长。通过容器技术可以很好地把握业务快速增长的机遇。在业界的统计中,使用容器技术可以实现 3~10 倍交付效率提升,这意味着企业可以进行快速迭代,低成本试错。

    弹性

    在互联网时代,企业 IT 系统经常需要面对电商大促、突发事件等可预期和非预期的流量增长。通过容器技术可以充分发挥云计算的弹性,通过提升部署密度和弹性来降低计算成本。比如在线教育,面对疫情之下指数级增长的流量,可以通过容器技术来缓解扩容的压力,支持数十万教师在线教学,百万学生在线学习。

    可移植性

    容器技术推进了云计算的标准化进程。容器已经成为应用分发和交付的标准,可以将应用与底层运行环境解耦;Kubernetes 成为资源调度和编排的标准,屏蔽了底层架构的差异性,帮助应用平滑运行在不同的基础设施上。CNCF 云原生计算基金会推出了Kubernetes一致性认证,进一步保障了不同 K8s 实现的兼容性。采用容器技术来构建云时代的应用基础设施将变得越来越容易。

    Kubernetes:云原生时代的基础设施

    云原生之路:容器技术落地最佳实践


    现在 Kubernetes 已经成为了云应用操作系统,越来越多应用运行在 Kubernetes 基础之上:从无状态的 Web 应用,到交易类应用(如数据库、消息中间件),再到数据化、智能化应用。阿里经济体也基于容器技术,实现了全面的云原生上云。

    阿里云容器服务介绍

    云原生之路:容器技术落地最佳实践


    阿里云容器服务产品家族可以在公共云、边缘计算和专有云环境提供企业容器平台。阿里云容器产品的核心是 Kubernetes Service - ACK 和 Serverless K8s - ASK,它们构建在阿里云的一系列基础设施能力之上,包括计算、存储、网络、安全等,并提供标准化接口、优化的能力和简化的用户体验。ACK 通过 CNCF K8s 一致性兼容认证,并提供了一系列企业关注的核心能力,比如安全治理,端到端可观测性、多云混合云等。

    镜像服务 ACR 是企业云原生应用资产管理的核心,可以管理 Docker 镜像,Helm Chart 等应用资产,并和 CI/CD 工具结合在一起提供完整的 DevSecOps 流程。

    托管服务网格 ASM,提供全托管的微服务应用流量管理平台,兼容 Istio,支持多个 Kubernetes 集群中应用的统一流量管理,为容器和虚拟机中应用服务提供一致的通信、安全和可观测能力。

    托管 K8s 集群

    云原生之路:容器技术落地最佳实践


    我们以托管 K8s 为例介绍集群部署拓扑结构。

    ACK 托管 K8s 集群基于 Kubernetes on Kubernetes 架构设计。K8s 集群的 Master 组件,运行在 ACK VPC 中的控制平面 K8s Cluster 之上。

    ACK 采用了默认高可用的架构设计:etcd 3 副本分别运行在 3 个不同 AZ 之上。也根据可扩展性最佳实践,提供了两组 etcd。一组保存配置信息,一组保存系统事件,这样可以提升 etcd 的可用性和可扩展性。用户 K8s 集群的 API Server/Scheduler 等 master 组件,采用多副本方式部署,运行在 2 个不同的 AZ 之上。master 组件可以根据工作负载进行弹性扩展,Worker 节点通过 SLB 来访问 API Server。这样的设计保证了整个 K8s 集群的可用性,即使一个 AZ 的失效,也不会导致 K8s 集群自身失败。

    worker 节点,运行在 VPC 上。将节点运行在不同的 AZ,配合应用的 AZ anti-affinity反亲和性可以保障应用的高可用。

    容器技术落地的最佳实践

    灵活丰富的弹性能力

    弹性是云最核心的能力之一,像双十一这样的典型脉冲应用场景,或者像疫情爆发之后的在线教育和办公协同的极速增长,只能依靠云提供的强大弹性算力才能支撑。Kubernetes 可以将云的弹性能力发挥到极致。

    ACK 在资源层和应用层提供了丰富的弹性策略,在资源层目前主流的方案是通过  cluster-autoscaler 进行节点的水平伸缩。当出现 Pod 由于资源不足造成无法调度时,cluster-autoscaler 会在节点池中自动创建新的节点实例,根据应用负载需求进行扩容。

    ECI 弹性容器实例,基于轻量虚拟机提供了 Serverless 化的容器运行环境。我们可以在 ACK 通过调度将业务应用运行在 ECI 实例上。这非常适合大数据离线任务、CI/CD 作业、突发的业务扩容等。在微博的应用场景中,弹性容器实例可以在 30 秒内扩容 500 Pod,轻松应对突发的新闻事件。

    在应用层,Kubernetes 提供了 HPA  的方式进行 Pod 的水平伸缩,和 VPA 进行 Pod 的垂直伸缩。阿里云提供了 metrics-adapter,可以支持更加丰富的弹性指标,比如可以根据 Ingress 的 QPS 指标,动态调整应用 Pod 数量。另外很多应用负载的资源画像是具有周期性的。比如证券行业业务的高峰是工作日的股市开盘时间。峰谷资源需求量的差异高达 20 倍,为了解决这类需求,阿里云容器服务提供了定时伸缩组件,开发者可以定义定时扩缩容策略,提前扩容好资源,而在波谷到来后定时回收资源。可以很好地平衡系统的稳定性和资源成本。

    Serverless Kubernetes

    K8s 提供的强大的功能和灵活性,但是运维一个 Kubernetes 生产集群极具挑战。即使利用托管 Kubernetes 服务,但是依然要保有 worker 节点资源池,还需要对节点进行日常维护,比如 OS 升级,安全补丁等,并根据自己的资源使用情况对资源层进行合理的容量规划。

    针对 K8s 的复杂性挑战,阿里云推出了 Serverless Kubernetes 容器服务—— ASK。ASK 在兼容 K8s 应用的前提下,对 Kubernetes 做减法,将复杂性下沉到云基础设施,极大降低了运维管理负担,让开发者更加专注于应用自身。


    云原生之路:容器技术落地最佳实践


    在 Serverless 容器场景,我们提供了两种不同的技术方案:ACK on ECI 和 ASK。

    ACK on ECI 

    ACK 集群兼具功能性和灵活性。非常适合大型互联网企业或传统企业的需求。可以一个集群中运行多种不同的应用、任务。它主要面向的是企业中 SRE 团队,可以对 K8s 进行定制化开发和灵活性控制。

    ACK 集群支持 3 种不同的容器运行时技术:




    ECI 在 K8s 集群中适合的场景:




    ASK

    ASK 则是针对 ISV 和企业中的部门/中小企业度身定制的容器产品。用户完全不需具备 K8s 的管理运维能力,即可创建和部署 K8s 应用,极大降低管理复杂性,非常适合应用托管、CI/CD、AI/数据计算等场景。比如可以利用 ASK 和 GPU ECI 实例构建了免运维的 AI 平台,可以按需创建机器学习环境,整体架构非常简单、高效。

    云原生弹性、高可用架构

    云原生分布式应用架构具备几个关键特性,高可用、可弹性伸缩、容错性好、易于管理、便于观察、标准化、可移植。我们可以在阿里云上构建云原生应用参考架构,其中包括:


    首先是端到端的弹性的应用架构。


    我们可以将前端应用、业务逻辑容器化,部署在 K8s 集群上,并根据应用负载配置 HPA 水平伸缩。

    在后端数据层,我们可以利用 PolarDB 这样的云原生数据库。PolarDB 采用存储和计算分离架构,支持水平扩展。同等规格下是 MySQL 性能的7倍,并且相较于 MySQL 能够节省一半成本。

    此外是系统化的高可用设计:


    这样我们可以保障整个系统具备 AZ 级别的可用性,可以容忍一个 AZ 的失效。

    此外,阿里云的高可用服务 AHAS,提供了架构感知的能力,可以对系统的拓扑结构进行可视化。而且它提供了应用巡检能力,帮助我们定位可用性问题。比如应用副本数是否满足可用性需求,RDS 数据库实例是否开启了多可用区容灾等等。

    多维度可观测性

    云原生之路:容器技术落地最佳实践


    在一个大规模分布式系统中,基础设施(如网络,计算节点、操作系统)或者应用自身都有可能会出现各种稳定性或者性能问题。可观测性可以帮助我们解分布式系统的状态,便于做出决策,并作为弹性伸缩和自动化运维的基础。

    一般而言,可观测性包含几个重要的层面:

    Logging – 日志(事件流)


    我们基于阿里云日志服务 SLS 提供了完整的日志方案,不但可以对应用日志进行收集、处理,并且提供了操作审计,K8s 事件中心等能力。


    Metrics – 监控指标


    对基础设施服务,比如 ECS、存储,网络,云监控提供了全面的监控。对于业务应用的性能指标,比如 Java 应用的 Heap 内存利用情况,ARMS无需修改业务代码即可对 Java 和 PHP 应用提供全方位的性能监控。对于 K8s 应用和组件,ARMS 提供的托管 Prometheus 服务,提供多种开箱即用的预置监控大盘,也提供开放接口,便于三方集成。


    Tracing – 全链路追踪


    Tracing Analysis 为开发者提供了完整的分布式应用调用链路统计、拓扑分析等工具。能够帮助开发者快速发现和诊断分布式应用中的性能瓶颈,提升微服务应用的性能和稳定性。


    从 DevOps 到 DevSecOps

    云原生之路:容器技术落地最佳实践


    安全是企业在应用容器技术中最大的顾虑,没有之一。为了系统化提升容器平台的安全性,我们需要全方位进行安全防护。第一件事,我们需要将 DevOps 提升成为 DevSecOps,强调需将安全概念融入在整个软件生命周期中,将安全防护能力左移到开发和交付阶段。

    ACR 镜像服务企业版提供了完整的安全软件交付链。用户上传镜像后,ACR 可以自动化地进行镜像扫描,发现其中存在的 CVE 漏洞。之后可以利用 KMS 秘钥服务,自动化对镜像添加数字签名。在 ACK 中,可以配置自动化安全策略,比如只允许经过安全扫描且符合上线要求的镜像在生产环境进行发布。整个软件交付链路可观测、可追踪、策略驱动。在保障安全性的前提下,可以有效提升交付效率。

    此外,在应用运行时,也会面对众多安全风险,比如新发现的 CVE 漏洞或者病毒攻击。阿里云安全中心提供了运行时的安全监控和防护能力。

    云安全中心可以对容器应用进程与网络情况监控,对应用的异常行为或者安全漏洞进行实时检测。发现问题后,会通过邮件、短信对用户进行通知,也提供了自动化隔离与修复能力。比如我们拿一个去年著名的挖矿蠕虫病毒为例,它会利用用户的配置错误对容器集群发动攻击。在云安全中心的帮助下,我们可以轻松发现它的踪迹并进行一键清除。

    托管服务网格 ASM

    云原生之路:容器技术落地最佳实践


    今年二月,我们发布了业内首个全托管,Istio 兼容的服务网格产品 ASM。服务网格的控制平面组件托管在阿里云侧,与数据平面侧的用户集群独立。通过托管模式,极大简化了 Istio 服务网格部署和管理的复杂性,解耦了网格与其所管理的 K8s 集群的生命周期,使得架构更加简单、灵活,提升了系统的稳定性和可伸缩性。此外,ASM 在 Istio 基础上进行大量的扩展,整合了阿里云可观测性服务、日志服务等,可以帮助用户更加高效地管理网格中的应用。

    在数据平面的支持上,ASM 产品可以支持多种不同的计算环境,这包括了 ACK Kubernetes 集群、ASK 集群、以及 ECS 虚拟机等。通过云企业网 CEN,ASM 可以实现多地域、跨 VPC 的 K8s 集群之间的服务网格。这样 ASM 可以对多地域的大规模分布式应用实现流量管理和灰度发布。此外,ASM 也会很快推出多云混合云的支持。

    混合云:企业上云新常态

    上云已是大势所趋,但是对于企业用户而言,有些业务由于数据主权和安全隐私的考虑,无法直接上云,只能采用混合云架构。Gartner 预测 81% 的企业将采用多云/混合云战略,混合云架构已经成为企业上云的新常态。

    传统的混合云架构以云资源为中心进行抽象和管理。然而不同云环境的基础设施、安全架构能力的差异会造成企业 IT 架构和运维体系的割裂,加大混合云实施的复杂性,提升运维成本。

    在云原生时代,以 Kubernetes 为代表的技术屏蔽了基础设施的差异性,可以更好地在混合云环境下,进行统一资源调度和统一应用生命周期管理。以应用为中心的混合云 2.0 架构已经到来!

    这里有几个典型场景:




    基于 ACK 和阿里云的混合云网络、存储网关以及数据库复制等能力,我们可以帮助企业构建全新的混合云 IT 架构。

    混合云 2.0 架构

    云原生之路:容器技术落地最佳实践


    首先 ACK 提供了统一集群管理能力,除了可以管理阿里云 K8s 集群之外,还可以纳管用户在 IDC 的自有 K8s 集群和其他云的 K8s 集群。利用统一的控制平面实现多个集群的统一的安全治理、可观测性、应用管理、备份恢复等能力。比如利用日志服务、托管 Prometheus 服务,可以无侵入的方式帮助用户对线上、线下集群有一个统一的可观测性大盘。利用云安全中心,AHAS 可以帮助用户在混合云的整体架构中发现并解决安全和稳定性风险。

    此外 ASM 提供统一的服务治理能力,结合 CEN、SAG 提供的多地域、混合云网络能力,可以实现服务就近访问,故障转移,灰度发布等功能,支持云容灾、异地多活等应用场景,提升业务连续性。

    云原生混合云解决方案

    云原生之路:容器技术落地最佳实践


    一个案例:职优你是一个电子学习职业发展平台,为来自世界多个地区的用户提供服务。它的应用部署在阿里云的 4 个不同地域上多个 Kubernetes 集群中。这些集群通过云企业网 CEN 将多个跨地域 VPC 网络打通,并通过一个 ASM 服务网格,对多个 K8s 集群中的微服务应用进行统一的流量管理。

    服务路由策略由 ASM 控制平面统一管理,并下发到多个 K8s 集群。用户请求会经过 DNS 分流到最近地域的入口网关,之后通过服务网格的就近访问能力,优先访问本地域内的服务端点。如果本地域的服务不可用,可以将请求自动转移到其他地域实现流量切换。

    云原生混合云管理

    阿里云的混合云解决方案有几个重要特点:


    Windows 容器平滑上云

    云原生之路:容器技术落地最佳实践


    我们来谈一下对 Windows 容器的支持。在现今企业中,Windows 操作系统依然占据半壁江山,其市场份额达 60% 之多。企业还有有大量的 Windows 应用,比如 ERP,CRM,ASP.Net 网站等。利用 Windows 容器和 Kubernetes,可以让 .Net 应用在代码不重写的情况下实现容器化交付,充分利用云上的弹性、敏捷等能力,实现业务应用的快速迭代和伸缩。

    ACK 支持 Windows 2019,在 K8s 容器集群中:

    1)为 Linux 和 Windows 应用提供了一致的用户体验和统一的能力。


    2)支持 Linux 和 Windows 应用在集群中的混合部署和互连互通, 比如我们可以让运行在 Linux 节点的 PHP 应用访问运行在 Windows 节点的 SQL Server 数据库。

    我们已经在支持了聚石塔电商平台和 supET 工业互联网平台支持了很多 ISV 来对 Windows 应用进行云原生化改造、升级。

    阿里云容器服务的演进方向

    下面我们快速介绍一下阿里云在云原生方面的产品市场策略。我们可以总结为三条:

    新基石:器技术是用户使用云资源的新界面,云原生技术是释放云价值的最短路径





    新算力:基于云原生的软硬一体化技术创新,提升计算效率,加速业务智能化升级




    新生态:通过开放技术生态和全球合作伙伴计划,帮助更多企业分享云时代技术红利





    重磅推荐
    2020 阿里巴巴研发效能峰会

    首次对外直播


    6 月 12 日 - 13 日,阿里巴巴内部研发效能峰会首次对外直播!7 大论坛,35 个议题,1300 分钟技术干货分享!39 位技术大咖,4 万阿里工程师,邀你共享研发效能盛宴!识别下方二维码,或点击文末”阅读原文“立即预约直播


    云原生之路:容器技术落地最佳实践




    推荐阅读






    关注「阿里技术」
    把握前沿技术脉搏



    戳我,立即预约直播。

    以上是关于阿里云容器服务差异化 SLO 混部技术实践的主要内容,如果未能解决你的问题,请参考以下文章

    历经 7 年双 11 实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?

    历经7年双11实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?

    云原生之路:容器技术落地最佳实践

    如何在云原生混部场景下利用资源配额高效分配集群资源?

    阿里云上万个 Kubernetes 集群大规模管理实践

    比心云平台基于阿里云容器服务 ACK 的弹性架构实践