简介
本文主要介绍如何在使用openEuler操作系统的服务器场景中部署和使用Kubernetes(K8s) NUMA(Non-Uniform Memory Access)亲和性调度插件。
为了在K8s 中启用NUMA亲和性特性,当前需要在计算节点上配置CPU策略为静态(static)模式,并将拓扑管理器(topology manager)策略设置为严格(strict)或单NUMA节点(single-numa-node)模式。在这种配置下,Pod(K8s中的基本容器管理单元)的CPU必须被设置为guarantee类型(即请求值等于限制值,request=limit)。在部署时,K8s会为Pod分配并绑定整数个逻辑核心,并且在Pod运行期间,这组CPU核心将被Pod独占,无法与其他Pod共享。
然而,当前大多数云服务提供商需要在服务器上部署大量容器,甚至超过服务器的物理核心数量。在这种场景下,无法使用静态模式的CPU策略,也无法保证容器在运行时具有CPU亲和性。为了解决这个问题,K8s超分场景下的NUMA自适应特性基于Containerd的NRI(Node Resource Interface)接口实现了一个K8s NUMA亲和性调度插件。插件通过源码开源的方式发布在Gitee。该插件能够在Pod部署时,根据计算节点的CPU负载情况自动调整Pod的CPU调度范围,从而确保NUMA亲和性。
父主题: 描述