DeviceTaintRule v1alpha3

DeviceTaintRule 为所有与选择器匹配的设备添加一个污点。

apiVersion: resource.k8s.io/v1alpha3

import "k8s.io/api/resource/v1alpha3"

DeviceTaintRule

DeviceTaintRule 为所有与选择器匹配的设备添加一个污点。这与 DRA 驱动程序直接在 ResourceSlice 中指定污点的效果相同。


  • apiVersion: resource.k8s.io/v1alpha3

  • kind: DeviceTaintRule

  • metadata (ObjectMeta)

    标准对象元数据

  • spec (DeviceTaintRuleSpec),必需

    Spec 指定选择器和一个污点。

    更改 spec 会自动增加 metadata.generation 编号。

DeviceTaintRuleSpec

DeviceTaintRuleSpec 指定选择器和一个污点。


  • taint (DeviceTaint),必需

    应用于匹配设备的污点。

    此污点附加到的设备对任何不能容忍该污点以及通过声明使用该声明的 Pod 产生“效果”。

    • taint.effect (string),必需

      污点对不容忍此污点的声明以及通过此类声明使用它们的 Pod 所产生的效果。有效的效果是 NoSchedule 和 NoExecute。此处不允许使用节点上使用的 PreferNoSchedule。

    • taint.key (string),必需

      要应用于设备的污点键。必须是标签名称。

    • taint.timeAdded (Time)

      TimeAdded 表示添加污点的时间。如果在创建或更新时未设置,则会自动添加。

      Time 是 time.Time 的包装器,支持正确地序列化为 YAML 和 JSON。提供了 time 包中许多工厂方法的包装器。

    • taint.value (string)

      污点键对应的污点值。必须是标签值。

  • deviceSelector (DeviceTaintSelector)

    DeviceSelector 定义污点应用于哪些设备。设备必须满足所有选择器条件才能匹配。空选择器匹配所有设备。没有选择器时,不匹配任何设备。

    DeviceTaintSelector 定义 DeviceTaintRule 应用于哪些设备。空选择器匹配所有设备。没有选择器时,不匹配任何设备。

    • deviceSelector.device (string)

      如果设置了 device,则仅选择具有该名称的设备。此字段对应于 slice.spec.devices[].name。

      设置 driver 和 pool 也有助于避免歧义,但不是必需的。

    • deviceSelector.deviceClassName (string)

      如果设置了 DeviceClassName,设备必须满足其中定义的选择器才能被选中。此字段对应于 class.metadata.name。

    • deviceSelector.driver (string)

      如果设置了 driver,则仅选择来自该驱动程序的设备。此字段对应于 slice.spec.driver。

    • deviceSelector.pool (string)

      如果设置了 pool,则仅选择该池中的设备。

      设置驱动程序名称也有助于避免不同驱动程序使用相同池名称时的歧义,但这并非必需,因为选择来自不同驱动程序的池也可能很有用,例如当具有节点本地设备的驱动程序使用节点名称作为其池名称时。

    • deviceSelector.selectors ([]DeviceSelector)

      原子操作:合并时将被替换

      Selectors 包含与 ResourceClaim 相同的选择条件。目前支持 CEL 表达式。必须满足所有这些选择器。

      DeviceSelector 必须且只能设置一个字段。

      • deviceSelector.selectors.cel (CELDeviceSelector)

        CEL 包含用于选择设备的 CEL 表达式。

        CELDeviceSelector 包含用于选择设备的 CEL 表达式。

        • deviceSelector.selectors.cel.expression (string),必需

          Expression 是一个 CEL 表达式,用于评估单个设备。当考虑中的设备满足期望条件时,它必须评估为 true;否则评估为 false。任何其他结果都是错误,会导致设备分配中止。

          表达式的输入是一个名为 "device" 的对象,它包含以下属性

          • driver (string):定义此设备的驱动程序名称。
          • attributes (map[string]object):设备的属性,按前缀分组(例如 device.attributes["dra.example.com"] 评估为一个对象,其中包含所有以 "dra.example.com" 为前缀的属性)。
          • capacity (map[string]object):设备的容量,按前缀分组。

          示例:考虑一个驱动程序为 "dra.example.com" 的设备,它暴露了名为 "model" 和 "ext.example.com/family" 的两个属性,并暴露了名为 "modules" 的一个容量。此表达式的输入将包含以下字段

          device.driver
          device.attributes["dra.example.com"].model
          device.attributes["ext.example.com"].family
          device.capacity["dra.example.com"].modules
          

          device.driver 字段可用于检查特定的驱动程序,既可以作为高级前置条件(即您只想考虑来自此驱动程序的设备),也可以作为旨在考虑来自不同驱动程序的包含多个子句的表达式的一部分。

          每个属性的值类型由设备定义决定,编写这些表达式的用户必须查阅其特定驱动程序的文档。每个容量的值类型为 Quantity。

          如果在 device.attributes 或 device.capacity 中查找使用了未知前缀,将返回一个空映射。任何对未知字段的引用都会导致评估错误并中止分配。

          健壮的表达式应该在引用属性之前检查属性是否存在。

          为了便于使用,cel.bind() 函数已启用,可用于简化访问具有相同域的多个属性的表达式。例如

          cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
          

          表达式的长度必须小于或等于 10 Ki。评估的成本也基于估算的逻辑步骤数受到限制。

DeviceTaintRuleList

DeviceTaintRuleList 是 DeviceTaintRule 的集合。


  • apiVersion: resource.k8s.io/v1alpha3

  • kind: DeviceTaintRuleList

  • metadata (ListMeta)

    标准列表元数据

  • items ([]DeviceTaintRule),必需

    Items 是 DeviceTaintRule 的列表。

操作


get 读取指定的 DeviceTaintRule

HTTP 请求

GET /apis/resource.k8s.io/v1alpha3/devicetaintrules/{name}

参数

  • name (in path): string,必需

    DeviceTaintRule 的名称

  • pretty (in query): string

    pretty

响应

200 (DeviceTaintRule): OK

401: 未经授权

list 列出或监视种类为 DeviceTaintRule 的对象

HTTP 请求

GET /apis/resource.k8s.io/v1alpha3/devicetaintrules

参数

响应

200 (DeviceTaintRuleList): OK

401: 未经授权

create 创建一个 DeviceTaintRule

HTTP 请求

POST /apis/resource.k8s.io/v1alpha3/devicetaintrules

参数

响应

200 (DeviceTaintRule): OK

201 (DeviceTaintRule): 已创建

202 (DeviceTaintRule): 已接受

401: 未经授权

update 替换指定的 DeviceTaintRule

HTTP 请求

PUT /apis/resource.k8s.io/v1alpha3/devicetaintrules/{name}

参数

响应

200 (DeviceTaintRule): OK

201 (DeviceTaintRule): 已创建

401: 未经授权

patch 部分更新指定的 DeviceTaintRule

HTTP 请求

PATCH /apis/resource.k8s.io/v1alpha3/devicetaintrules/{name}

参数

  • name (in path): string,必需

    DeviceTaintRule 的名称

  • body: Patch,必需

  • dryRun (in query): string

    dryRun

  • fieldManager (in query): string

    fieldManager

  • fieldValidation (in query): string

    fieldValidation

  • force (in query): boolean

    force

  • pretty (in query): string

    pretty

响应

200 (DeviceTaintRule): OK

201 (DeviceTaintRule): 已创建

401: 未经授权

delete 删除一个 DeviceTaintRule

HTTP 请求

DELETE /apis/resource.k8s.io/v1alpha3/devicetaintrules/{name}

参数

响应

200 (DeviceTaintRule): OK

202 (DeviceTaintRule): 已接受

401: 未经授权

deletecollection 删除 DeviceTaintRule 集合

HTTP 请求

DELETE /apis/resource.k8s.io/v1alpha3/devicetaintrules

参数

响应

200 (Status): OK

401: 未经授权

此页面是自动生成的。

如果您打算报告此页面的问题,请在问题描述中注明此页面是自动生成的。修复可能需要在 Kubernetes 项目中的其他地方进行。

最后修改于 2025 年 4 月 24 日太平洋标准时间 9:14:Markdown API 参考 v1.33 (b84ec30bbb)