使用
K8s NUMA亲和性调度插件允许在部署Pod时指定CPU资源需求,系统将自动按NUMA亲和性分配资源。通过编写YAML文件并指定节点选择器,可以将Pod部署到特定节点上。
成功部署插件后,只需在部署其他Pod时指定CPU资源的request和limit值,系统将自动按照NUMA亲和性原则进行资源分配。
以下为部署一个单容器Pod的YAML文件示例,供用户参考。该Pod请求的CPU资源最小值为4核,最大值为8核,内存固定为4Gi。容器使用名为openeuler:loop的测试镜像,该镜像可以通过执行loop N命令启动N个循环线程,最多占用N个CPU核。
- 创建YAML文件,例如example.yaml,并在YAML文件中写入以下配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
apiVersion: v1 kind: Pod metadata: name: nri-test annotations: spec: containers: - name: nri-1 image: openeuler:loop imagePullPolicy: IfNotPresent command: ["loop"] args: ["10"] resources: requests: cpu: "4" memory: "4Gi" limits: cpu: "8" memory: "4Gi"
- 在多工作节点的K8s集群中,Pod可能会被调度到不同节点的NUMA内。如果希望Pod在指定的节点上运行,只需在YAML文件的spec部分加入nodeSelector字段,并指定kubernetes.io/hostname为目标节点的名称。以指定Pod在compute01节点上运行为例,需要在YAML文件中的spec部分加入以下内容。
1 2
nodeSelector: kubernetes.io/hostname: compute01
- 编写好YAML文件之后,只需要管理节点应用该YAML文件即可完成Pod的部署。
kubectl apply -f example.yaml