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 (字串), 必填

      汙點對不容忍此汙點的宣告,以及透過此類宣告對使用它們的 Pod 產生的影響。有效的影響為 NoSchedule 和 NoExecute。在此處,用於節點的 PreferNoSchedule 無效。

    • taint.key (字串), 必填

      要應用於裝置的汙點鍵。必須是標籤名稱。

    • taint.timeAdded (時間)

      TimeAdded 表示新增汙點的時間。如果未設定,則在建立或更新期間自動新增。

      Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

    • taint.value (字串)

      汙點鍵對應的汙點值。必須是標籤值。

  • deviceSelector (DeviceTaintSelector)

    DeviceSelector 定義汙點應用於哪些裝置。裝置必須滿足所有選擇器條件才能匹配。空選擇器匹配所有裝置。如果沒有選擇器,則不匹配任何裝置。

    DeviceTaintSelector 定義 DeviceTaintRule 適用於哪些裝置。空選擇器匹配所有裝置。如果沒有選擇器,則不匹配任何裝置。

    • deviceSelector.device (字串)

      如果設定了 device,則僅選擇具有該名稱的裝置。此欄位對應於 slice.spec.devices[].name。

      可能還需要同時設定 driver 和 pool 以避免歧義,但這不是必需的。

    • deviceSelector.deviceClassName (字串)

      如果設定了 DeviceClassName,則裝置必須滿足其中定義的選擇器才能被選中。此欄位對應於 class.metadata.name。

    • deviceSelector.driver (字串)

      如果設定了 driver,則僅選擇來自該驅動程式的裝置。此欄位對應於 slice.spec.driver。

    • deviceSelector.pool (字串)

      如果設定了 pool,則僅選擇該池中的裝置。

      同時設定驅動程式名稱可能有助於避免當不同驅動程式使用相同的池名稱時出現歧義,但這不是必需的,因為選擇來自不同驅動程式的池也可能有用,例如當具有節點本地裝置的驅動程式使用節點名稱作為其池名稱時。

    • deviceSelector.selectors ([]DeviceSelector)

      原子性:在合併期間將被替換

      Selectors 包含與 ResourceClaim 相同的選擇標準。目前支援 CEL 表示式。所有這些選擇器都必須滿足。

      DeviceSelector 必須且僅有一個欄位被設定。

      • deviceSelector.selectors.cel (CELDeviceSelector)

        CEL 包含用於選擇裝置的 CEL 表示式。

        CELDeviceSelector 包含用於選擇裝置的 CEL 表示式。

        • deviceSelector.selectors.cel.expression (字串), 必填

          Expression 是一個評估單個裝置的 CEL 表示式。當所考慮的裝置滿足所需條件時,它必須評估為 true,否則評估為 false。任何其他結果都是錯誤,並導致裝置分配中止。

          表示式的輸入是一個名為 "device" 的物件,它具有以下屬性:

          • driver (字串): 定義此裝置的驅動程式名稱。
          • 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 (在路徑中): string,必填

    DeviceTaintRule 的名稱

  • pretty (在查詢中): string

    pretty

響應

200 (DeviceTaintRule): 成功

401: 未授權

list 列出或監視 DeviceTaintRule 型別的物件

HTTP 請求

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

引數

響應

200 (DeviceTaintRuleList): 成功

401: 未授權

create 建立 DeviceTaintRule

HTTP 請求

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

引數

響應

200 (DeviceTaintRule): 成功

201 (DeviceTaintRule): 已建立

202 (DeviceTaintRule): 已接受

401: 未授權

update 替換指定的 DeviceTaintRule

HTTP 請求

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

引數

響應

200 (DeviceTaintRule): 成功

201 (DeviceTaintRule): 已建立

401: 未授權

patch 部分更新指定的 DeviceTaintRule

HTTP 請求

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

引數

  • name (在路徑中): string,必填

    DeviceTaintRule 的名稱

  • body: Patch,必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • force (在查詢中): boolean

    force

  • pretty (在查詢中): string

    pretty

響應

200 (DeviceTaintRule): 成功

201 (DeviceTaintRule): 已建立

401: 未授權

delete 刪除 DeviceTaintRule

HTTP 請求

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

引數

響應

200 (DeviceTaintRule): 成功

202 (DeviceTaintRule): 已接受

401: 未授權

deletecollection 刪除 DeviceTaintRule 集合

HTTP 請求

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

引數

響應

200 (Status): OK

401: 未授權

本頁面是自動生成的。

如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。

最後修改時間:2025 年 4 月 24 日上午 9:14 PST:v1.33 的 Markdown API 參考 (b84ec30bbb)