ResourceSlice v1alpha3
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
ResourceSlice
ResourceSlice 表示一个或多个资源,这些资源位于同一个驱动所管理的、彼此相似的资源构成的资源池。 一个池可以包含多个 ResourceSlice,一个池包含多少个 ResourceSlice 由驱动确定。
目前,所支持的资源只能是具有属性和容量的设备。 给定池中的每个设备,无论有多少个 ResourceSlice,必须具有唯一名称。 发布设备的 ResourceSlice 可能会随着时间的推移而变化。 设备的唯一标识符是元组 <驱动名称>、<池名称>、<设备名称>。
每当驱动需要更新池时,pool.spec.pool.generation 编号加一, 并用新的编号和新的资源定义来更新所有 ResourceSlice。 资源用户必须仅使用 generation 编号最大的 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),必需
driver 标明提供容量信息的 DRA 驱动。可以使用字段选择算符仅列举具有特定驱动名称的 ResourceSlice 对象。
字段值必须是 DNS 子域名并且应以驱动供应商所拥有的 DNS 域结尾。此字段是不可变更的。
pool (ResourcePool),必需
pool 描述 ResourceSlice 所属的池。
ResourcePool 描述 ResourceSlice 所属的池。
pool.generation (int64),必需
generation 跟踪池中随时间发生的变化。每当驱动更改池中一个或多个资源的某些内容时, 它必须为所有属于该池的 ResourceSlice 更改 generation。 ResourceSlice 的使用者应仅考虑池中 generation 编号最大的资源。 generation 可以被驱动重置,这对于使用者来说应该没问题, 前提是池中的所有 ResourceSlice 都已被更新以匹配,或都已被删除。
结合 resourceSliceCount,此机制让使用者能够检测资源池包含多个 ResourceSlice 且处于不完整状态的情况。
pool.name (string),必需
name 用作池的标识符。对于节点本地设备,字段值通常是节点名称,但这不是必须的。
此字段不得超过 253 个字符,并且必须由一个或多个用斜杠分隔的 DNS 子域组成。此字段是不可变更的。
pool.resourceSliceCount (int64),必需
resourceSliceCount 是池中带有对应 generation 编号的 ResourceSlice 的总数。必须大于零。
资源用户可以使用此字段检查他们是否能看到属于同一池的所有 ResourceSlice。
allNodes (boolean)
allNodes 表示所有节点都可以访问池中的资源。
nodeName、nodeSelector 和 allNodes 之一必须被设置。
devices ([]Device)
原子性:将在合并期间被替换
devices 列举池中的部分或全部设备。
列表大小不得超过 128 个条目。
Device 表示可以基于其属性进行选择的一个单独硬件实例。name 之外,必须且只能设置一个字段。
devices.name (string),必需
name 是池中由驱动所管理的设备的标识符,在所有设备中唯一。此字段值必须是 DNS 标签。
devices.basic (BasicDevice)
basic 定义一个设备实例。
devices.basic.attributes (map[string]DeviceAttribute)
attributes 定义设备的属性集。在该集合中每个属性的名称必须唯一。
attributes 和 capacities 两个映射合起来,最多包含 32 个属性。
devices.basic.attributes.bool (boolean)
bool 字段值是 true/false。
devices.basic.attributes.int (int64)
int 字段值是一个整数。
devices.basic.attributes.string (string)
string 字段值是一个字符串。不得超过 64 个字符。
devices.basic.attributes.version (string)
version 字段值是符合 semver.org 2.0.0 规范的语义版本。不得超过 64 个字符。
devices.basic.capacity (map[string]Quantity)
capacity 定义设备的容量集。在该集合中每个容量的名称必须唯一。
attributes 和 capacities 两个映射合起来,最多包含 32 个属性。
nodeName (string)
nodeName 标明提供池中资源的某个节点。可以使用字段选择算符仅列举属于特定节点的 ResourceSlice 对象。
此字段可用于限制节点只能访问具有相同节点名称的 ResourceSlice。 此字段还向负责添加相同类型节点的自动扩缩容程序指明,某些旧节点也能够提供新资源供访问。
nodeName、nodeSelector 和 allNodes 三个字段必须设置其一。此字段是不可变更的。
nodeSelector (NodeSelector)
nodeSelector 定义当池所涉及的节点不止一个时,在哪些节点上可以访问到资源。
此字段中只能设置一个判定条件。
nodeName、nodeSelector 和 allNodes 三个字段必须设置其一。
NodeSelector 表示在一组节点上一个或多个标签查询结果的并集; 也就是说,它表示由节点选择算符条件所表示的选择算符的逻辑或计算结果。
nodeSelector.nodeSelectorTerms ([]NodeSelectorTerm),必需
原子性:将在合并期间被替换
必需。节点选择算符条件的列表。这些条件最终会被按照逻辑或操作组合起来。
未指定或空的节点选择算符条件不会匹配任何对象。各个条件最少是按逻辑与运算组合到一起的。 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 (路径参数): string,必需
ResourceSlice 的名称。
pretty (查询参数): string
响应
200 (ResourceSlice): OK
401: Unauthorized
list
列举或监视类别为 ResourceSlice 的对象
HTTP 请求
GET /apis/resource.k8s.io/v1alpha3/resourceslices
参数
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
响应
200 (ResourceSliceList): OK
401: Unauthorized
create
创建 ResourceSlice
HTTP 请求
POST /apis/resource.k8s.io/v1alpha3/resourceslices
参数
body: ResourceSlice,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
响应
200 (ResourceSlice): OK
201 (ResourceSlice): Created
202 (ResourceSlice): Accepted
401: Unauthorized
update
替换指定的 ResourceSlice
HTTP 请求
PUT /apis/resource.k8s.io/v1alpha3/resourceslices/{name}
参数
name (路径参数): string,必需
ResourceSlice 的名称。
body: ResourceSlice,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
响应
200 (ResourceSlice): OK
201 (ResourceSlice): Created
401: Unauthorized
patch
部分更新指定的 ResourceSlice
HTTP 请求
PATCH /apis/resource.k8s.io/v1alpha3/resourceslices/{name}
参数
name (路径参数): string,必需
ResourceSlice 的名称。
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
响应
200 (ResourceSlice): OK
201 (ResourceSlice): Created
401: Unauthorized
delete
删除 ResourceSlice
HTTP 请求
DELETE /apis/resource.k8s.io/v1alpha3/resourceslices/{name}
参数
name (路径参数): string,必需
ResourceSlice 的名称。
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
响应
200 (ResourceSlice): OK
202 (ResourceSlice): Accepted
401: Unauthorized
deletecollection
删除 ResourceSlice 的集合
HTTP 请求
DELETE /apis/resource.k8s.io/v1alpha3/resourceslices
参数
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
响应
200 (Status): OK
401: Unauthorized