部署插件
在所有工作节点导入K8s NUMA亲和性调度插件容器镜像,在管理节点安装并验证插件的部署状态。
前提条件
K8s NUMA亲和性调度插件的运行依赖于K8s集群以及Containerd容器运行时。在部署该插件之前,需确保K8s集群已完成正确的网络配置,并且能够顺利部署和运行容器实例。
运行环境准备完成后,在计算节点的Containerd配置文件(默认为“/etc/containerd/config.toml”)当中打开NRI功能。如果不存在上述配置文件,则可运行如下命令创建:
containerd config default > /etc/containerd/config.toml
在配置文件中,打开NRI功能,如果不存在则进行添加:
[plugins] ... [plugins."io.containerd.nri.v1.nri"] disable = false # 打开NRI disable_connections = false plugin_config_path = "/etc/nri/conf.d" plugin_path = "/opt/nri/plugins" plugin_registration_timeout = "5s" plugin_request_timeout = "2s" socket_path = "/var/run/nri/nri.sock"
配置修改后,重启Containerd,并检查是否重启成功。
systemctl daemon-reload systemctl restart containerd systemctl status containerd
工作节点

需要在所有工作节点导入K8s NUMA亲和性调度插件的容器镜像。
ctr -n k8s.io images import /path/to/numadj-nriplugin.tar
其中“/path/to/numadj-nriplugin.tar”为插件容器镜像的实际路径,请根据实际情况修改。
管理节点
- 在管理节点上,进入k8s-scheduling-tuning-plugin源码目录,并执行安装插件的命令。
cd /path/to/k8s-scheduling-tuning-plugin make plugin_install
其中“/path/to/k8s-scheduling-tuning-plugin”为K8s NUMA亲和性调度插件源码的实际路径,请根据实际情况修改。
- 验证插件的部署状态。
查看插件的Pod是否已成功部署。
kubectl get pods -A | grep numaadj
如果部署成功,将看到输出中包含numaadj开头的Pod处于Running状态。
1 2 3 4
NAME READY STATUS RESTARTS AGE numaadj-db62k 1/1 Running 0 4m55s numaadj-kmp9p 1/1 Running 0 4m55s numaadj-pqdsx 1/1 Running 0 4m55s
如果无法启动Pod,可以检查插件的日志信息:
kubectl logs numaadj-db62k
出现错误信息:"failed to start with initial configuration: failed to start NRI plugin ....."时,请检查是否开启Containerd的NRI功能。
- 可选:当不再需要使用该插件时,可以卸载插件。
请在管理节点卸载插件。当前步骤仅供需要卸载插件时参考,不属于部署插件的必要操作步骤。
- 在管理节点上,进入k8s-scheduling-tuning-plugin源码目录,并执行插件卸载命令。
cd /path/to/k8s-scheduling-tuning-plugin make plugin_uninstall
其中“/path/to/k8s-scheduling-tuning-plugin”为K8s NUMA亲和性调度插件源码的实际路径,请根据实际情况修改。
- 验证插件的Pod的删除状态。
kubectl get pods -A | grep numaadj
如果卸载成功,将看到输出中不再包含numaadj开头的Pod。
1
NAME READY STATUS RESTARTS AGE
- 在管理节点上,进入k8s-scheduling-tuning-plugin源码目录,并执行插件卸载命令。