K8S 1.31 新功能: 跨核分发CPU

2024-08-30 20:36

本文主要是介绍K8S 1.31 新功能: 跨核分发CPU,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

​在Kubernetes的最新版本1.31中,一个超酷的新功能,叫做CPUManager的静态策略,里面有个选项叫做distribute-cpus-across-cores。虽然这个功能现在还在测试阶段,也就是alpha版,而且默认是藏起来的,但它的目的是让CPU的工作效率更高,特别是在那些有好多核心的处理器上,能让整个系统跑得更顺畅。

我们再来回顾一下Kubernetes的CPUManager是如何实现CPU资源分配的?

想象一下,Kubernetes的CPUManager就像个智能的管家,它负责把CPU资源分配给需要的容器。这整个过程是这样的:

  1. 资源请求:每个容器在启动时都会告诉CPUManager,它需要多少CPU资源,就像是说'嘿,我需要这么多CPU来干活'。

  2. 资源配额:CPUManager会看看集群的资源配额和限制,就像是看看家里有多少资源,然后决定能分给容器多少。

  3. CPU亲和性:有时候,容器可能更喜欢某些特定的CPU core,CPUManager会记下来,尽量满足它们的需求。

  4. 静态策略:在静态策略下,CPUManager会尝试把容器的CPU资源请求固定到特定的CPU core 上,就像是给每个容器分配一个固定的座位。

  5. 动态策略:动态策略就更灵活了,容器可以根据需要随时请求或释放CPU资源,就像是可以临时换座位。

  6. 资源调度:Kubernetes的调度器在分配容器到节点时,会看看哪个节点的CPU资源够用,确保每个容器都能得到它需要的资源。

  7. 资源监控:CPUManager还会时刻监控容器的CPU使用情况,确保它们不会超用。

  8. 资源回收:如果容器用得太多,CPUManager可能会限制它,保证其他容器也能正常运行。

通过这些办法,CPUManager确保了每个容器都能公平、高效地使用CPU资源,让整个集群的性能达到最佳。但是如果分配CPU资源的时候,总把它们都挤在一起,尽量用最少的物理core来处理的话,这样做有个问题,就是不同的CPU如果用同一个物理core,它们就得共享一些资源,比如缓存啊,执行单元这些,这就可能会影响效率。

所以呢,Kubernetes的这个新版本里就加了这个distribute-cpus-across-cores特性。即让CPUManager在分配CPU的时候,尽量把它们分散开,让每个CPU都能用上不同的物理core上。这样一来,每个CPU都有自己的空间,不用和其他CPU抢资源,运行起来自然就更顺畅,性能也能有所提升。

如果你想用这个distribute-cpus-across-cores新功能,首先得告诉Kubernetes的CPUManager用静态策略来管理CPU。这可以通过在启动kubelet的时候加个参数--cpu-manager-policy=static,或者在Kubelet的配置文件里设置cpuManagerPolicy: static来实现。

接下来,你还得告诉CPUManager用上这个分散CPU到不同核心的策略。这可以通过在配置里加上--cpu-manager-policy-options distribute-cpus-across-cores=true或者直接设置distribute-cpus-across-cores=true来做到。

不过得注意,这个新策略和另外两个选项full-pcpus-only或者distribute-cpus-across-numa是不能一起用的,别弄混了。

当然,每个新东西出来的时候,总有些限制,这个distribute-cpus-across-cores特性也不例外,尤其是它现在还在测试阶段。现在有个问题是,这个特性不能和其他一些可能会有冲突的CPU分配策略一起用。这可能会让一些需要特别资源管理的工作或者特定的部署环境用起来有点麻烦。

但是呢,别担心,社区正在努力改进这个特性。将来的更新会解决这些兼容性的问题,让这个策略能够和其他CPUManager的策略更好地配合。这样就可以打造一个既灵活又强大的CPU分配系统,能够满足各种不同的工作需求和性能目标。

最后,我们想一下,哪些场景可以使用 distribute-cpus-across-cores这个特性呢?

  1. 多核处理器优化:就像你有很多帮手,但大家都挤在一个小厨房里做饭,效率肯定不高。这个特性就是让每个容器都有自己的空间,避免大家挤在一起,提高效率。

  2. 缓存局部性:好比你的口袋里有各种工具,如果都放在一起,找起来就慢。分散开,每个工具有自己的位置,用起来就快多了。

  3. 避免资源争用:就像交通高峰期,大家都想走同一条路,结果就是堵车。这个特性就是让交通更顺畅,每个容器都有自己的路。

  4. 异构工作负载:如果你有各种各样的任务要处理,这个特性就能帮你把资源分配得更均匀,保证每个任务都能顺利进行。

  5. 性能敏感型应用:对于那些需要快速反应的应用,比如在线游戏或者股票交易,这个特性能确保它们总能拿到足够的CPU资源。

  6. 避免NUMA效应:在一些复杂的系统里,CPU和内存可能不在同一个地方,就像超市里不同区域的商品,拿起来会慢一些。这个特性就是减少这种延迟。

  7. 测试和开发:开发者可以用这个特性来试试看不同的CPU分配策略,就像是在做实验,看看哪种方法最好。

  8. 集群资源管理:管理员可以用这个特性来更好地管理资源,就像是在规划怎么分配家里的房间,让每个人都住得舒服。

总的来说,这个特性就像是个智能的资源分配器,特别适合那些需要精细控制CPU资源,让系统跑得更快更稳的场景。

这篇关于K8S 1.31 新功能: 跨核分发CPU的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121863

相关文章

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring+MyBatis+jeasyui 功能树列表

java代码@EnablePaging@RequestMapping(value = "/queryFunctionList.html")@ResponseBodypublic Map<String, Object> queryFunctionList() {String parentId = "";List<FunctionDisplay> tables = query(parent

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等