Koordinator 协同 containerd NRI 增强容器 QoS,提升应用性能

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: Koordinator 协同 containerd NRI 增强容器 QoS,提升应用性能

作者:韩柔刚 - 阿里云,张康 - Intel


随着云基础业务类型和硬件资源的日益丰富,数据中心的资源利用率得到了显著提高,但也带来了资源争用的风险。在提高节点资源利用率的同时,确保应用程序的 QoS(Quality of Service),并避免 Noisy Neighbor 问题是一个关键挑战。


Koordinator 和 containerd 作为云原生领域的开源项目,近期针对容器 QoS 的优化进行了深度合作,通过引入 NRI (Node Resource Interface,节点资源接口) 的方式来优化容器的资源管理和 QoS,解决先前资源管理模式中遇到的问题,大大提升了 Koordinator 部署的灵活性和处理的时效性,提供了一种优雅的云原生系统的资源管理标准化模式。


KubeCon China 2023


在即将召开的 KubeCon + CloudNativeCon China 2023 会议上,将由 Intel 和阿里云的工程师在现场为大家带来关于 Koordinator 和 containerd NRI 的深度解读,欢迎大家关注。该主题会介绍和演示如何通过在 Kubernetes 上集成最新的 CRI 运行时(例如 containerd、cri-o)中的 NRI(节点资源接口),在 Koordinator 中确保工作负载的 QoS。与传统方法(如独立模式和运行时代理拦截 CRI 请求的模式)相比,NRI 的插件化设计避免了对 Kubelet 的侵入性修改,极大增强了 Koordinator 部署的灵活性,实时处理 Pod 生命周期事件,并为云原生系统提供了一种优雅且标准化的资源管理解决方案。



Koordinator 的前世今生


Koordinator 是一个开源项目,旨在基于阿里巴巴在容器调度领域的多年经验,提供一个完整的混部解决方案,包含混部工作负载编排、资源调度、资源隔离及性能调优等多方面能力,来帮助用户优化容器性能,充分发掘空闲物理资源,提升资源效率,增强延迟敏感型工作负载和批处理作业的运行效率和可靠性。


业界很多互联网公司或多或少都有布局将不同特征类型工作负载协同调度的技术方向,充分利用负载之间的消峰填谷效应,让工作负载以更稳定、更高效、更低成本的方式去使用资源。这样的一套系统或机制,也就是业界时常提及的 “混部”概念。阿里巴巴在 2011 年开始探索容器技术,并在 2016 年启动混部技术研发,至今经过了多轮技术架构升级,最终演进到今天的云原生混部系统架构,实现了全业务规模超千万核的云原生混部,混部天级平均 CPU 利用率超 50%,帮助阿里巴巴节省了大量的资源成本。


基于在混部技术领域多年的实践经验,阿里巴巴正式开源了 Koordinator 项目,帮助企业快速收获云原生混部带来的技术红利,提高全局的资源利用效率。Koordinator 旨在为广大企业解决在应用混部的过程中面临的两大挑战:如何将应用接入到混部平台以及如何让应用在平台上能够稳定、高效的运行。


Koordinator 开源社区自 2022 年 4 月正式启动以来,阿里巴巴会同业界多个伙伴一起参与共建,贡献了众多的想法、代码和场景,推动了 Koordinator 项目的成熟发展。迄今为止,吸纳了包括阿里巴巴、蚂蚁科技、Intel、小米、小红书、爱奇艺、360、有赞、趣玩等公司在内的大量优秀工程师,贡献了众多的想法、代码和场景,一起推动 Koordinator 项目的成熟。


NRI 的发展历程


NRI (Node Resource Interface)[1] 是用于控制节点资源的公共接口,是 CRI 兼容的容器运行时插件扩展的通用框架。它为扩展插件提供了跟踪容器状态,并对其配置进行有限修改的基本机制。


NRI 是 Containerd 的一个子项目, NRI 允许将自定义的业务逻辑插入到 CRI 兼容的运行时中,例如 Containerd,CRI-O。在容器的生命周期中,这些逻辑可以对容器的 Spec 进行修改,或者在确定的 hook 点做一些 OCI (Open Container Initiative) 范围之外的操作。NRI 可以用于进一步完善设备或者其他资源的分配和管理。NRI 本身对任何容器运行时 (CRI Runtime) 的内部实现细节是不感知的。它为 CRI 运行时提供了一个适配库,用于集成 NRI 和扩展插件进行交互。


NRI 提供了接口定义和基础组件,可以实现可插拔的 CRI 运行时插件,这些插件就是 NRI 插件 (NRI Plugin)。这些 NRI 插件是与运行时类型无关的,插件既可以应用于 Containerd,也可以应用 CRI-O。原则上,任何 NRI 插件 (NRI Plugin) 都应该能够和启用 NRI 的运行时 (NRI-enabled CRI Runtimes) 正常协作。


NRI 插件是一个类似守护进程的实例。插件的单个实例会处理 NRI 所有的事件和请求,使用 Unix-domain socket 来进行数据传输和通信,NRI 定义了一套基于 protobuf 的协议并通过 ttrpc 进行实现。这样可以通过降低每条信息的开销提高通信效率,并且可以实现有状态的 NRI 插件。



上图展示了一个 NRI 以及 NRI 插件在处理 CRI 请求的位置和流程。关于 NRI 的更多信息,请参见 containerd/nri


结语


最后,Koordinator 是一个开放的社区,欢迎广大云原生爱好者们随时通过各种方式参与共建,无论您在云原生领域是初学乍到还是驾轻就熟,我们都非常期待听到您的声音!欢迎通过搜索钉钉群号加入 Koordinator 社区用户交流群。(群号:33383887)


9 月 28 日,KubeCon China 2023,Koordinator 社区在上海期待与您不见不散!


相关链接:

[1] NRI (Node Resource Interface)

https://github.com/containerd/nri


点击此处,立即体验 Koordinator 项目!

相关文章
|
6月前
|
Kubernetes 搜索推荐 Docker
K8S容器运行时弃用Docker转型Containerd
K8S容器运行时弃用Docker转型Containerd
1077 0
|
6月前
|
Kubernetes 搜索推荐 Linux
Containerd容器镜像管理
Containerd容器镜像管理
|
1月前
|
Kubernetes Docker 容器
容器运行时Containerd k8s
容器运行时Containerd k8s
38 2
|
2月前
|
存储 Docker 容器
containerd容器运行时快速入门使用指南
关于containerd容器运行时的快速入门使用指南,涵盖了镜像管理、容器管理、NameSpace管理、数据持久化、镜像推送至Harbor仓库以及Docker与Containerd集成等内容。
154 1
containerd容器运行时快速入门使用指南
|
3月前
|
存储 Kubernetes Cloud Native
容器管理工具Containerd
容器管理工具Containerd
|
3月前
|
Kubernetes 搜索推荐 Docker
Kubernetes容器运行时:Containerd vs Docke
Kubernetes容器运行时:Containerd vs Docke
109 4
|
3月前
|
Kubernetes Unix Linux
k8s将节点容器运行时从Docker迁移到Containerd
k8s将节点容器运行时从Docker迁移到Containerd
|
6月前
|
Kubernetes Cloud Native API
轻量级容器管理工具 Containerd
轻量级容器管理工具 Containerd
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
25 2
|
15天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。