使用 ConfigMap 添加自定义设备

介绍

  • 通过 ConfigMap 实现 Kubernetes 自定义资源的标准化定义和管理,解决以下问题:
  • 自定义资源规范的统一管理,防止配置碎片化
  • 标准化的资源定义格式,便于维护
  • 支持多语言描述和默认值配置
  • 适用于需要扩展 Kubernetes 资源模型的场景(例如,GPU 资源管理),提供标准化的资源定义框架

特性

  • 单键资源定义规范
  • 多键关联资源定义
  • 标准化的资源请求接口
  • 中英文双语描述支持
  • 资源默认值配置机制

优势

  • 扩展性:通过标签进行资源组管理
  • 安全性:命名空间隔离(kube-public)
  • 稳定性:强制格式验证规则
  • 可维护性:统一的元数据标签规范

功能模块 1:ConfigMap 编写规范

核心规则

  1. 单一职责原则:每个键定义对应一个 ConfigMap

  2. 命名空间:固定为 namespace=kube-public

  3. 命名约定

    cf-crl-{customName}-{keyName}
    • cf-crl:固定前缀
    • customName:自定义有效名称
    • keyName:键标识符(特殊字符用 '-' 替换)
  4. 标签要求

    labels:
      features.alauda.io/type: CustomResourceLimitation  # 固定值
      features.alauda.io/group: {resource-group}         # 例如,gpu-manager
      features.alauda.io/enabled: "true"               # 启用标志
    

参数规范

参数必填描述
name format遵循 cf-crl-{customName}-{keyName}
namespace固定为 kube-public
label group必须包含指定的 3 个特征标签

功能模块 2:资源值定义

单键示例

apiVersion: v1
kind: ConfigMap
metadata:
  name: cf-crl-gpu-manager-vcuda-core
  namespace: kube-public
  labels:
    features.alauda.io/type: CustomResourceLimitation
    features.alauda.io/group: gpu-manager
    features.alauda.io/enabled: "true"
data:
  key: "tencent.com/vcuda-core"       # 资源键
  dataType: "integer"                # 值类型
  defaultValue: "20"                 # 默认值
  descriptionZh: "" # 中文描述
  descriptionEn: "GPU vcore count, 100 virtual cores equal 1 physical GPU core" # 英文描述
  group: "gpu-manager"               # 资源组
  limits: "optional"                 # 限制字段策略
  requests: "disabled"               # 请求字段策略

多键关联

metadata:
  name: cf-crl-gpu-manager-vcuda-core
  labels: [相同的组标签]

metadata:
  name: cf-crl-gpu-manager-vcuda-memory
  labels: [相同的组标签]  # 通过相同标签进行关联

策略规范

字段允许值描述
limitsdisabled/required/optional资源限制配置
requestsdisabled/required/fromLimits资源请求配置