ResourceSlice v1alpha3

ResourceSlice 表示由通用驱动程序管理的类似资源池中的一个或多个资源。

apiVersion: resource.k8s.io/v1alpha3

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

ResourceSlice

ResourceSlice 表示由通用驱动程序管理的类似资源池中的一个或多个资源。一个池可能跨越多个 ResourceSlice,并且构成一个池的 ResourceSlice 的确切数量由驱动程序确定。

目前,唯一支持的资源是具有属性和容量的设备。给定池中的每个设备,无论有多少 ResourceSlice,都必须具有唯一的名称。设备发布的 ResourceSlice 可能会随着时间而改变。设备的唯一标识符是元组 <驱动程序名称>、<池名称>、<设备名称>。

每当驱动程序需要更新池时,它都会递增 pool.Spec.Pool.Generation 编号,并使用新的编号和新的资源定义更新所有 ResourceSlice。使用者必须只使用具有最高代数的 ResourceSlice,并忽略所有其他 ResourceSlice。

当分配池中匹配特定条件的所有资源,或者当在几个不同的替代方案中寻找最佳解决方案时,使用者应检查池中 ResourceSlice 的数量(包含在每个 ResourceSlice 中),以确定其池视图是否完整,如果不是,则应等待,直到驱动程序完成池的更新。

对于不属于节点本地的资源,未设置节点名称。相反,驱动程序可以使用节点选择器来指定设备在何处可用。

这是一个 Alpha 类型,需要启用 DynamicResourceAllocation 特性门控。


  • apiVersion: resource.k8s.io/v1alpha3

  • kind: ResourceSlice

  • metadata (ObjectMeta)

    标准对象元数据

  • spec (ResourceSliceSpec),必需

    包含驱动程序发布的信息。

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

ResourceSliceSpec

ResourceSliceSpec 包含驱动程序在一个 ResourceSlice 中发布的信息。


  • driver (string),必需

    驱动程序标识提供容量信息的 DRA 驱动程序。字段选择器可用于仅列出具有特定驱动程序名称的 ResourceSlice 对象。

    必须是 DNS 子域,并且应以驱动程序供应商拥有的 DNS 域结尾。此字段是不可变的。

  • pool (ResourcePool),必需

    池描述此 ResourceSlice 所属的池。

    ResourcePool 描述 ResourceSlice 所属的池。

    • pool.generation (int64),必需

      代数会跟踪池随时间的变化。每当驱动程序更改池中一个或多个资源的某些内容时,它都必须更改属于该池的所有 ResourceSlice 中的代数。ResourceSlice 的使用者应仅考虑来自具有最高代数的池的资源。驱动程序可以重置代数,这对使用者来说应该没问题,前提是池中的所有 ResourceSlice 都已更新以匹配或删除。

      与 ResourceSliceCount 结合使用,此机制使使用者能够检测由多个 ResourceSlice 组成且处于不完整状态的池。

    • pool.name (string),必需

      名称用于标识池。对于节点本地设备,这通常是节点名称,但这不是必需的。

      它的长度不得超过 253 个字符,并且必须由一个或多个以斜杠分隔的 DNS 子域组成。此字段是不可变的。

    • pool.resourceSliceCount (int64),必需

      ResourceSliceCount 是此代数中池中的 ResourceSlice 总数。必须大于零。

      使用者可以使用此项来检查他们是否已查看属于同一池的所有 ResourceSlice。

  • allNodes (boolean)

    AllNodes 指示所有节点都可以访问池中的资源。

    必须设置 NodeName、NodeSelector 和 AllNodes 中的一个。

  • devices ([]Device)

    原子性:在合并期间将被替换

    设备列出此池中的部分或所有设备。

    不得超过 128 个条目。

    设备表示一个可以基于其属性进行选择的单独硬件实例。除了名称之外,必须设置一个字段。

    • devices.name (string),必需

      名称是池中驱动程序管理的所有设备中的唯一标识符。它必须是 DNS 标签。

    • devices.basic (BasicDevice)

      Basic 定义一个设备实例。

      BasicDevice 定义一个设备实例。

      • devices.basic.attributes (map[string]DeviceAttribute)

        属性定义此设备的属性集。每个属性的名称在该集合中必须唯一。

        属性和容量的最大组合数为 32。

        DeviceAttribute 必须精确地设置一个字段。

        • devices.basic.attributes.bool (boolean)

          BoolValue 是一个 true/false 值。

        • devices.basic.attributes.int (int64)

          IntValue 是一个数字。

        • devices.basic.attributes.string (string)

          StringValue 是一个字符串。长度不得超过 64 个字符。

        • devices.basic.attributes.version (string)

          VersionValue 是根据 semver.org 规范 2.0.0 的语义版本。长度不得超过 64 个字符。

      • devices.basic.capacity (map[string]Quantity)

        容量定义此设备的容量集。每个容量的名称在该集合中必须唯一。

        属性和容量的最大组合数为 32。

  • nodeName (string)

    NodeName 标识提供此池中资源的节点。字段选择器可用于仅列出属于特定节点的 ResourceSlice 对象。

    此字段可用于限制从节点访问具有相同节点名称的 ResourceSlice。它还向自动扩缩器指示,添加与某些旧节点类型相同的新节点也可能会使新资源可用。

    必须设置 NodeName、NodeSelector 和 AllNodes 中的一个。此字段是不可变的。

  • nodeSelector (NodeSelector)

    当该池不限于单个节点时,NodeSelector 定义哪些节点可以访问池中的资源。

    必须精确使用一个术语。

    必须设置 NodeName、NodeSelector 和 AllNodes 中的一个。

    节点选择器表示一组节点上一个或多个标签查询的结果的并集;也就是说,它表示由节点选择器术语表示的选择器的 OR。

    • nodeSelector.nodeSelectorTerms ([]NodeSelectorTerm),必需

      原子性:在合并期间将被替换

      必需。节点选择器术语的列表。这些术语是 ORed。

      空或空的节点选择器项不匹配任何对象。它们的要求是AND运算。TopologySelectorTerm 类型实现了 NodeSelectorTerm 的一个子集。

      • nodeSelector.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)

        原子性:在合并期间将被替换

        按节点的标签列出的节点选择器要求列表。

      • nodeSelector.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)

        原子性:在合并期间将被替换

        按节点的字段列出的节点选择器要求列表。

ResourceSliceList

ResourceSliceList 是 ResourceSlice 的集合。


  • apiVersion: resource.k8s.io/v1alpha3

  • kind: ResourceSliceList

  • items ([]ResourceSlice), 必选

    Items 是资源 ResourceSlice 的列表。

  • metadata (ListMeta)

    标准列表元数据

操作


get 读取指定的 ResourceSlice

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必选

    ResourceSlice 的名称

  • pretty (在查询中): 字符串

    pretty

响应

200 (ResourceSlice): OK

401: 未授权

list 列出或监视 ResourceSlice 类型的对象

HTTP 请求

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

参数

响应

200 (ResourceSliceList): OK

401: 未授权

create 创建一个 ResourceSlice

HTTP 请求

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

参数

响应

200 (ResourceSlice): OK

201 (ResourceSlice): 已创建

202 (ResourceSlice): 已接受

401: 未授权

update 替换指定的 ResourceSlice

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必选

    ResourceSlice 的名称

  • body: ResourceSlice, 必选

  • dryRun (在查询中): 字符串

    dryRun

  • fieldManager (在查询中): 字符串

    fieldManager

  • fieldValidation (在查询中): 字符串

    fieldValidation

  • pretty (在查询中): 字符串

    pretty

响应

200 (ResourceSlice): OK

201 (ResourceSlice): 已创建

401: 未授权

patch 部分更新指定的 ResourceSlice

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必选

    ResourceSlice 的名称

  • body: Patch, 必选

  • dryRun (在查询中): 字符串

    dryRun

  • fieldManager (在查询中): 字符串

    fieldManager

  • fieldValidation (在查询中): 字符串

    fieldValidation

  • force (在查询中): 布尔值

    force

  • pretty (在查询中): 字符串

    pretty

响应

200 (ResourceSlice): OK

201 (ResourceSlice): 已创建

401: 未授权

delete 删除一个 ResourceSlice

HTTP 请求

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

参数

响应

200 (ResourceSlice): OK

202 (ResourceSlice): 已接受

401: 未授权

deletecollection 删除 ResourceSlice 的集合

HTTP 请求

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

参数

响应

200 (Status): OK

401: 未授权

此页面是自动生成的。

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

上次修改时间:2024 年 9 月 5 日 早上 6:58 PST:修复 API 参考中 ListMeta 的字段名称 (9ca17f3979)