7.4. kubectl-plugins
kubectl 插件是 Kubernetes 提供的一种扩展机制,允许用户通过独立可执行文件为 kubectl 添加自定义子命令,从而在不修改核心代码的前提下扩展其功能。 基于此机制,为了优化沐曦云原生产品的使用体验,沐曦提供了 kubectl-metax 插件,旨在帮助用户更便捷地获取集群及相关资源信息。
7.4.1. 安装与补全配置
安装 kubectl-metax 插件需要使用名称格式为 kubectl-plugins-packages.0.15.0.tar.gz 的离线压缩包,用户可解压直接安装使用。 解压缩后,执行以下安装命令,将插件安装到宿主机上即可使用本插件:
kubectl-plugins-0.15.0.run install
配置自动补全,通过以下命令配置即可实现 kubectl-metax <Tab> 补全体验。
echo 'source <(kubectl completion bash)' >> ~/.bashrc
echo 'source <(kubectl-metax completion bash)' >> ~/.bashrc
source ~/.bashrc
7.4.2. 卸载方式
kubectl-plugins-0.15.0.run uninstall
# 如果配置了自动补全,删除 kubectl 的补全配置
sed -i '/source <(kubectl completion bash)/d' ~/.bashrc
# 如果配置了自动补全,删除 kubectl-metax 的补全配置
sed -i '/source <(kubectl-metax completion bash)/d' ~/.bashrc
7.4.3. sgpu插件
为简化集群管理员对 sGPU 资源(算力、显存)的监控与管理,沐曦提供了专用的插件。该插件支持资源统计与快速定位,能够直观展示节点上的 sGPU 剩余资源、使用状态及关联容器信息。
包含子命令如下:
show-nodeshow-podshow-device
7.4.3.1. 使用示例
参数 |
描述 |
|---|---|
|
指定 kubeconfig 文件路径 |
|
指定namespace,默认使用当前上下文的namespace |
show-node
以节点维度显示节点的关于GPU算力显存以及sGPU资源整体使用情况,并且支持显式指定需要的节点。当不加参数时,显示集群中所有节点的sGPU使用情况。
# 默认情况 显示集群中所有节点的sGPU资源使用情况
metax@k8s-master:~$ kubectl metax sgpu show-node
NODENAME SGPU(FREE/TOTAL) COMPUTE(FREE/TOTAL) VRAM(FREE/TOTAL)
k8s-worker-1 30/32 80/200(%) 57344/65536(Mi)
k8s-worker-2 32/32 200/200(%) 65536/65536(Mi)
metax@k8s-master:~$ kubectl metax sgpu show-node k8s-worker-1
NODENAME SGPU(FREE/TOTAL) COMPUTE(FREE/TOTAL) VRAM(FREE/TOTAL)
k8s-worker-1 30/32 80/200(%) 57344/65536(Mi)
其中 SGPU(FREE/TOTAL) 为节点上sGPU资源剩余与总量, COMPUTE(FREE/TOTAL) 为节点上算力剩余与总量,其中节点上一张GPU卡的算力为 100% 。
VRAM(FREE/TOTAL) 为节点上显存剩余与总量。
show-device
支持查看节点上设备的相关信息,包括当前所有节点上GPU相关信息(算力显存分配情况、 Qos 、sGPU的 UUID 以及使用该sGPU的 pod 、 container 、 namespace )并且支持显式指定需要的节点。
默认显示该节点上使用sGPU资源的相关信息,如果没有使用sGPU将不显示内容。
参数 |
描述 |
|---|---|
|
过滤只显示指定GPU相关的信息 |
|
只显示GPU信息,不显示sGPU资源的相关信息 |
|
显示目前节点上GPU资源信息以及sGPU资源使用情况以及他们之间的父子设备关系 |
当需要查看节点上使用sGPU资源的相关信息时,直接使用以下命令即可:
metax@k8s-master:~$ kubectl metax sgpu show-device
NODENAME SGPU-UUID GPU-UUID COMPUTE VRAM MODEL
k8s-worker-1 GPU-33f3a1d1-ac03-34da-8dcd-2b3b945dfc3e GPU-7a86c97a-09f9-521d-de3a-d3de9303e60f 60% 4096Mi sgpu
k8s-worker-1 GPU-287a75d7-aa7c-7916-38de-f7812e64830a GPU-5377c1c1-3cfe-5ed0-2d61-8b8ba47292f0 60% 4096Mi sgpu
当需要查看节点上所有GPU算力显存分配情况的信息时,可以使用 --summary 命令:
metax@k8s-master:~$ kubectl metax sgpu show-device --summary
NODENAME SGPU(FREE/TOTAL) COMPUTE(FREE/TOTAL) VRAM(FREE/TOTAL) QOS MODEL
k8s-worker-1 15/16 40/100(%) 28672/32768(Mi) best-effort sgpu
k8s-worker-1 15/16 40/100(%) 28672/32768(Mi) best-effort sgpu
k8s-worker-2 16/16 100/100(%) 32768/32768(Mi) / native
k8s-worker-2 16/16 100/100(%) 32768/32768(Mi) / native
metax@k8s-master:~$ kubectl metax sgpu show-device k8s-worker-1 --summary
NODENAME SGPU(FREE/TOTAL) COMPUTE(FREE/TOTAL) VRAM(FREE/TOTAL) QOS MODEL
k8s-worker-1 15/16 40/100(%) 28672/32768(Mi) best-effort sgpu
k8s-worker-1 15/16 40/100(%) 28672/32768(Mi) best-effort sgpu
当需要查看目前节点上GPU资源相关信息、sGPU资源使用情况以及他们之间的父子设备关系时,可以使用 --summary-allocated 命令:
# --summary-allocated 显示的SGPU COMPUTE VRAM 为该设备使用率
metax@k8s-master:~$ kubectl metax sgpu show-device --summary-allocated
NODENAME GPU-UUID SGPU COMPUTE VRAM QOS MODEL PODNAME
k8s-worker-1 GPU-5377c1c1-3cfe-5ed0-2d61-8b8ba47292f0 1 60% 4096Mi best-effort sgpu sample-pod-jzk5l
GPU-287a75d7-aa7c-7916-38de-f7812e64830a 60% 4096Mi best-effort sgpu sample-pod-jzk5l
k8s-worker-1 GPU-7a86c97a-09f9-521d-de3a-d3de9303e60f 1 60% 4096Mi best-effort sgpu sample-pod-jzk5l
GPU-33f3a1d1-ac03-34da-8dcd-2b3b945dfc3e 60% 4096Mi best-effort sgpu sample-pod-jzk5l
k8s-worker-2 GPU-5377c1c1-3cfe-5ed0-2d61-8b8ba47292f0 0 0% 0Mi / native
k8s-worker-2 GPU-7a86c97a-09f9-521d-de3a-d3de9303e60f 0 0% 0Mi / native
metax@k8s-master:~$ kubectl metax sgpu show-device k8s-worker-1 --summary-allocated
NODENAME GPU-UUID SGPU COMPUTE VRAM QOS MODEL PODNAME
k8s-worker-1 GPU-5377c1c1-3cfe-5ed0-2d61-8b8ba47292f0 1 60% 4096Mi best-effort sgpu sample-pod-jzk5l
GPU-287a75d7-aa7c-7916-38de-f7812e64830a 60% 4096Mi best-effort sgpu sample-pod-jzk5l
k8s-worker-1 GPU-7a86c97a-09f9-521d-de3a-d3de9303e60f 1 60% 4096Mi best-effort sgpu sample-pod-jzk5l
GPU-33f3a1d1-ac03-34da-8dcd-2b3b945dfc3e 60% 4096Mi best-effort sgpu sample-pod-jzk5l
show-pod
指定pod 显示 pod 关于sGPU资源的使用情况以及相关信息(容器名、容器使用sGPU数量、使用sGPU的 UUID、所属 GPU 的 UUID 以及使用的算力显存)。
参数 |
描述 |
|---|---|
|
额外显示pod的appclass、 qos、 namespace、 nodename等信息 |
metax@k8s-master:~$ kubectl metax sgpu show-pod sample-pod-jzk5l
PODNAME CONTAINER SGPU SGPU-UUID GPU-UUID COMPUTE VRAM
sample-pod-jzk5l ubuntu-container 2 GPU-33f3a1d1-ac03-34da-8dcd-2b3b945dfc3e GPU-7a86c97a-09f9-521d-de3a-d3de9303e60f 60% 4096Mi
GPU-287a75d7-aa7c-7916-38de-f7812e64830a GPU-5377c1c1-3cfe-5ed0-2d61-8b8ba47292f0 60% 4096Mi
metax@k8s-master:~$ kubectl metax sgpu show-pod sample-pod-jzk5l -owide
PODNAME APPCLASS QOS NAMESPACE NODENAME CONTAINER SGPU SGPU-UUID GPU-UUID COMPUTE VRAM
sample-pod-jzk5l normal best-effort default k8s-worker-1 ubuntu-container 2 GPU-33f3a1d1-ac03-34da-8dcd-2b3b945dfc3e GPU-7a86c97a-09f9-521d-de3a-d3de9303e60f 60% 4096Mi
GPU-287a75d7-aa7c-7916-38de-f7812e64830a GPU-5377c1c1-3cfe-5ed0-2d61-8b8ba47292f0 60% 4096Mi