← 返回列表

070-容器云高级特性统一设置

高级特性

一、算力卡参数说明

1.1 界面参数说明

# 整个交互界面参数说明
1. 打开开关显示下面配置
2. 选中算力卡,意思安装该算力卡
2.1 天数GPU:ix-device-plugin.enabled=true
2.2 海光DCU:hygon-device-plugin.enabled=true
2.3 昇腾NPU:ascend-device-plugin.enabled=true
2.4 NVIDIA:gpu-operator.enabled=true
2.5 如果安装NVIDIA时,node-feature-discovery.enabled=false,其他算力卡都要选择true
3. 分布式打开设置:lws.emabled=true,否则就是false
4. 模式选择
4.1  选择整卡模式无插件选择
4.2 仅选中nvidia 才显示MIG模式
4.3 选中虚拟化模式
4.3.1 选中hami, hami.enabled=true
4.3.1.1 打开 numa亲和:vocano.custom.scheduler_config_override 的第二个plugins 覆盖或者增加  
		- name: numa-aware
          arguments:
          weight: 10
关闭时去掉
4.3.1.2 打开 优先级抢占调度:vocano.custom.scheduler_config_override,tiers所有的.plugins 里面所有的 enablePreemptable 设置为true 
4.3.1.3 打开 公平调度:vocano.custom.scheduler_config_override 修改
          - name: drf
            enablePreemptable: false // 如果4.3.1.2 开启这里要设置为true
4.3.1.4 打开组调度:vocano.custom.scheduler_config_override tiers[0].plugins 里面查找如果没有就增加,关闭就就删除
          - name: 
            enablePreemptable: false // 如果4.3.1.2 开启这里要设置为true
4.3.1.5 选择volcano调度策略 
4.3.1.5.1 选择binpack:
第二plugins 里面增加 - name: binpack 删除 spread
4.3.1.5.2 spread:
第二plugins 里面增加 - name: spread 删除 binpack
4.3.1.6 打开重调度 vocano.custom.descheduler_enable 设置为true
4.3.1.6 打开在离线混部署 vocano.custom.colocation_enable 设置为true
增加labels [{nodename:"10-30-100-155","patch_labels":{"volcano.sh/colocation":"true"}}]
4.3.1.6 打开资源超卖 增加laebs  [{nodename:"10-30-100-155","patch_labels":{"volcano.sh/colocation":"true","volcano.sh/oversubscription":"true"}}]
4.3.1.6 设置出口网络带宽 增加laebs  [{nodename:"10-30-100-155","patch_labels":{"gpu_core_mode":"whole","volcano.sh/colocation":"true","volcano.sh/oversubscription":"true"}},"patch_annotations":{"volcano.sh/network-bandwidth-rate":1000}]

1.2 模式和插件参数说明

#模式和插件选择参数说明

#模式1:选择整卡模式
gpu_core_mode:whole
hami-dcgm:on
--------------------------------------
#模式2: 选择虚拟化模式
必填标签:
gpu_core_mode:hami-core
选填标签:
如果插件选择:hami-gpu
	hami-gpu:on
    gpu:on
    hami-dcgm:on
    volcano-gpu:null
  
如果插件选择:volcano-gpu
   volcano-gpu:on
   gpu:null
   hami-dcgm:null
   hami-gpu:null
----
------hami要修改的配置文件values中----devicePlugin.nodeConfiguration.config 是一个字符串---   
{      // 多个节点需要多个对象组成数组并压缩成字符串
        "nodeconfig": [
          {
            "name": "10-30-100-155",
            "operatingmode": "hami-core",
            "devicememoryscaling": 1.5,
            "devicesplitcount": 10,
            "migstrategy": "none",
            "filterdevices": {
              "uuid": [],
              "index": []
            },
          }
        ]
}
------vocano要修改的配置文件values中----nodeConfig.configs  是一个yaml 对象数组---   
nodeConfig:
  enabled: true
  configs:
    - name: "10-30-100-155"
      operatingmode: "hami-core"
      devicememoryscaling: 1.5
      devicesplitcount: 10
      migstrategy: "none"
      filterdevices:
        uuid: []
        index: []  


----------------------------------------------------------------------------------------------------


#模式3:选择MIG模式
gpu_core_mode:mig
选填标签:
如果插件选择:hami-gpu
	hami-gpu:on
    gpu:on
    hami-dcgm:on
    volcano-gpu:null
  
如果插件选择:volcano-gpu
   volcano-gpu:on
   gpu:null
   hami-dcgm:null
   hami-gpu:null

------hami要修改的配置文件values中----devicePlugin.nodeConfiguration.config 是一个字符串---   
{      // 多个节点需要多个对象组成数组并压缩成字符串
        "nodeconfig": [
          {
            "name": "10-30-100-155",
            "operatingmode": "hami-core",
            "devicememoryscaling": 1.5,
            "devicesplitcount": 10,
            "migstrategy": "none",
            "filterdevices": {
              "uuid": [],
              "index": []
            },
          }
        ]
}
------vocano要修改的配置文件values中----nodeConfig.configs  是一个yaml 对象数组---   
nodeConfig:
  enabled: true
  configs:
    - name: "10-30-100-155"
      operatingmode: "hami-core"
      devicememoryscaling: 1.5
      devicesplitcount: 10
      migstrategy: "none"
      filterdevices:
        uuid: []
        index: []  
---------------
device device-config.yaml 配置 volcano-vgpu-device-plugin/hami 下deviceConfig.nvidia.knownMigGeometries //举例
deviceConfig:
  nvidia:
    knownMigGeometries: // 数据来源于https://10.30.100.155:8443/v1/topke/node/gpu/migInstance
      - models: ["A30"] // gpu_type  唯一值,有就修改,没有就新增,选择一个节点就选择一种类型  有就替换,没有就添加
        allowedGeometries:
            -geometries:
              - name: 1g.6gb // Name
                memory: 6144 // Memory
                count: 4 // InstanceCount


----

二、volcano高级调度配置

#旧配置
apiVersion: v1
data:
  volcano-scheduler.conf: |
    actions: "enqueue, allocate, backfill"
    tiers:
    - plugins:
      - name: priority
      - name: gang
        enablePreemptable: false
      - name: conformance
    - plugins:
      - name: overcommit
      - name: drf
        enablePreemptable: false
      - name: predicates
      - name: proportion
      - name: nodeorder
      - name: binpack
kind: ConfigMap
metadata:
  annotations:
    meta.helm.sh/release-name: volcano
    meta.helm.sh/release-namespace: topke-system
  creationTimestamp: "2026-06-22T08:41:05Z"
  labels:
    app.kubernetes.io/managed-by: Helm
  name: volcano-scheduler-configmap
  namespace: topke-system
  resourceVersion: "6480926"
  uid: b3c2d7c6-cdad-4404-8d62-4b0afc67ccc2
---------------------
#新配置
apiVersion: v1
data:
  volcano-scheduler.conf: |
    actions: "enqueue, allocate, backfill"
    tiers:
      - plugins:
          - name: priority
          - name: gang
            enablePreemptable: true
          - name: conformance
      - plugins:
          - name: overcommit
          - name: drf
            enablePreemptable: true
          - name: predicates
          - name: proportion
          - name: nodeorder
          - name: spread
          - name: numa-aware
            arguments:
              weight: 10
kind: ConfigMap
metadata:
  annotations:
    meta.helm.sh/release-name: volcano
    meta.helm.sh/release-namespace: topke-system
    topke.cluster.name: xggg
    topke.cluster.uuid: 131b128d-5e11-43eb-91e4-8183b514a503
    topke.createtime.unix: "1782117665"
    topke.tenant.name: ken
    topke.tenant.uuid: debe920e-5cc5-4e85-bd8b-a17cfc574602
  creationTimestamp: "2026-06-22T08:41:05Z"
  labels:
    app.kubernetes.io/managed-by: Helm
  name: volcano-scheduler-configmap
  namespace: topke-system
  resourceVersion: "6999765"
  uid: b3c2d7c6-cdad-4404-8d62-4b0afc67ccc2
  
-----------------------------------  
  
apiVersion: v1
data:
  volcano-scheduler.conf: |
    actions: "enqueue, allocate, backfill"
    tiers:
      - plugins:
          - name: priority
          - name: gang
            enablePreemptable: true
          - name: conformance
      - plugins:
          - name: overcommit
          - name: drf
            enablePreemptable: true
          - name: predicates
          - name: proportion
          - name: nodeorder
          - name: numa-aware
            arguments:
              weight: 10
          - name: binpack
kind: ConfigMap
metadata:
  annotations:
    meta.helm.sh/release-name: volcano
    meta.helm.sh/release-namespace: topke-system
    topke.cluster.name: xggg
    topke.cluster.uuid: 131b128d-5e11-43eb-91e4-8183b514a503
    topke.createtime.unix: "1782117665"
    topke.tenant.name: ken
    topke.tenant.uuid: debe920e-5cc5-4e85-bd8b-a17cfc574602
  creationTimestamp: "2026-06-22T08:41:05Z"
  labels:
    app.kubernetes.io/managed-by: Helm
  name: volcano-scheduler-configmap
  namespace: topke-system
  resourceVersion: "7000997"
  uid: b3c2d7c6-cdad-4404-8d62-4b0afc67ccc2

自动伸缩

  • 镜像列表
cat << EOF > /tmp/autoscapimage.txt 
registry.k8s.io/autoscaling/vpa-admission-controller:1.7.0
registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0
registry.k8s.io/autoscaling/vpa-recommender:1.7.0
registry.k8s.io/autoscaling/vpa-updater:1.7.0
registry.aliyuncs.com/acs/kubernetes-cronhpa-controller:v1.4.3-2f290b2-aliyun
registry.k8s.io/metrics-server/metrics-server:v0.8.1
EOF

while read -r IMAGE; do
   	MY_IMAGE=$(echo "$IMAGE" | sed 's|^registry\.k8s\.io/|k8s\.flyingtang\.com/|')
   	FILE_NAME="${IMAGE##*/}"
	FILE_NAME="${FILE_NAME/:/_}.tar"
   	nerdctl pull $MY_IMAGE
   	nerdctl tag $MY_IMAGE "10.30.13.175:5000/topke-system/$IMAGE"
   	nerdctl save "10.30.13.175:5000/topke-system/$IMAGE" | gzip > $FILE_NAME
done < /tmp/autoscapimage.txt

Roce-Link

cat << EOF > /tmp/autoscapimage.txt 
ghcr.io/k8snetworkplumbingwg/sriov-network-operator:v1.6.0
ghcr.io/k8snetworkplumbingwg/sriov-network-operator-config-daemon:v1.6.0
ghcr.io/k8snetworkplumbingwg/sriov-cni:v2.10.0
ghcr.io/k8snetworkplumbingwg/ib-sriov-cni:v1.3.0
ghcr.io/k8snetworkplumbingwg/ovs-cni-plugin:v0.39.0
ghcr.io/k8snetworkplumbingwg/rdma-cni:v1.6.0
ghcr.io/k8snetworkplumbingwg/sriov-network-device-plugin:v3.11.0
ghcr.io/k8snetworkplumbingwg/network-resources-injector
ghcr.io/k8snetworkplumbingwg/sriov-network-operator-webhook
ghcr.io/k8snetworkplumbingwg/sriov-network-metrics-exporter
registry.k8s.io/kubebuilder/kube-rbac-proxy:v0.15.0
ghcr.io/k8snetworkplumbingwg/multus-cni:snapshot 
ghcr.io/k8snetworkplumbingwg/whereabouts:v0.9.3
EOF

while read -r IMAGE; do
   	MY_IMAGE=$(echo "$IMAGE" | sed 's|^ghcr\.io/|ghcr\.flyingtang\.com/|')
   	FILE_NAME="${IMAGE##*/}"
	FILE_NAME="${FILE_NAME/:/_}.tar"
   	nerdctl pull $MY_IMAGE
   	nerdctl tag $MY_IMAGE "10.30.13.175:5000/topke-system/$IMAGE"
   	nerdctl push "10.30.13.175:5000/topke-system/$IMAGE"
   	nerdctl save "10.30.13.175:5000/topke-system/$IMAGE" | gzip > $FILE_NAME
done < /tmp/autoscapimage.txt

while read -r IMAGE; do
   	MY_IMAGE=$(echo "$IMAGE" | sed 's|^registry\.k8s\.io/|k8s\.flyingtang\.com/|')
   	FILE_NAME="${IMAGE##*/}"
	FILE_NAME="${FILE_NAME/:/_}.tar"
   	nerdctl pull $MY_IMAGE
   	nerdctl tag $MY_IMAGE "10.30.13.175:5000/topke-system/$IMAGE"
   	nerdctl push "10.30.13.175:5000/topke-system/$IMAGE"
   	nerdctl save "10.30.13.175:5000/topke-system/$IMAGE" | gzip > $FILE_NAME
done < /tmp/autoscapimage.txt