ResourceSlice v1beta1

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

apiVersion: resource.k8s.io/v1beta1

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

ResourceSlice

ResourceSlice 表示由通用驱动程序管理的,相似资源池中的一个或多个资源。一个池可能跨越多个 ResourceSlice,并且一个池由多少个 ResourceSlice 组成,这取决于驱动程序。

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

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

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

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

这是一个 alpha 类型,需要启用 DynamicResourceAllocation 功能门控。


  • apiVersion: resource.k8s.io/v1beta1

  • kind: ResourceSlice

  • metadata (ObjectMeta)

    标准对象元数据

  • spec (ResourceSliceSpec),必选

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

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

ResourceSliceSpec

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


  • driver (string),必选

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

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

  • pool (ResourcePool),必选

    Pool 描述此 ResourceSlice 所属的池。

    ResourcePool 描述 ResourceSlice 所属的池。

    • pool.generation (int64),必选

      Generation 跟踪池随时间的变化。每当驱动程序更改池中一个或多个资源的某些信息时,它都必须更改作为该池一部分的所有 ResourceSlice 中的生成。ResourceSlice 的使用者应仅考虑来自具有最高世代编号的池中的资源。生成可以由驱动程序重置,这对使用者来说应该没有问题,假设池中的所有 ResourceSlice 都已更新为匹配或已删除。

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

    • pool.name (string),必选

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

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

    • pool.resourceSliceCount (int64),必选

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

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

  • allNodes (boolean)

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

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

  • devices ([]Device)

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

    Devices 列出此池中的某些或所有设备。

    不得超过 128 个条目。

    Device 表示可以根据其属性选择的单个硬件实例。除了名称,必须设置一个字段。

    • devices.name (string),必选

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

    • devices.basic (BasicDevice)

      Basic 定义一个设备实例。

      BasicDevice 定义一个设备实例。

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

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

        属性和容量的总数不得超过 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)

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

        属性和容量的总数不得超过 32 个。

  • nodeName (string)

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

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

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

  • nodeSelector (NodeSelector)

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

    必须只使用一个术语。

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

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

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

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

      必选。节点选择器术语列表。这些术语进行 OR 运算。

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

      • nodeSelector.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)

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

        根据节点的标签,列出节点选择器要求。

      • nodeSelector.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)

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

        根据节点的字段,列出节点选择器要求。

ResourceSliceList

ResourceSliceList 是 ResourceSlices 的集合。


  • apiVersion: resource.k8s.io/v1beta1

  • kind: ResourceSliceList

  • items ([]ResourceSlice), 必需

    Items 是资源 ResourceSlices 的列表。

  • metadata (ListMeta)

    标准的列表元数据

操作


get 读取指定的 ResourceSlice

HTTP 请求

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

参数

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

    ResourceSlice 的名称

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

    pretty

响应

200 (ResourceSlice): OK

401: 未授权

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

HTTP 请求

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

参数

响应

200 (ResourceSliceList): OK

401: 未授权

create 创建一个 ResourceSlice

HTTP 请求

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

参数

响应

200 (ResourceSlice): OK

201 (ResourceSlice): 已创建

202 (ResourceSlice): 已接受

401: 未授权

update 替换指定的 ResourceSlice

HTTP 请求

PUT /apis/resource.k8s.io/v1beta1/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/v1beta1/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/v1beta1/resourceslices/{name}

参数

响应

200 (ResourceSlice): OK

202 (ResourceSlice): 已接受

401: 未授权

deletecollection 删除 ResourceSlice 的集合

HTTP 请求

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

参数

响应

200 (Status): OK

401: 未授权

此页面是自动生成的。

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

上次修改时间为 2024 年 11 月 19 日太平洋标准时间上午 11:15: DRA:包括 v1beta1 API 引用 (26b5da0885)