ResourceSlice v1alpha3
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
ResourceSlice
ResourceSlice представляет один или несколько ресурсов в пуле подобных ресурсов, управляемых общим драйвером. Пул может охватывать более одного ResourceSlice, и точное количество ResourceSlices, составляющих пул, определяется драйвером.
В настоящее время поддерживаются только устройства с атрибутами и ёмкостями. Каждое устройство в данном пуле, независимо от количества ResourceSlices, должно иметь уникальное имя. ResourceSlice, в котором публикуется устройство, может со временем измениться. Уникальный идентификатор устройства — кортеж <имя драйвера>, <имя пула>, <имя устройства>.
Всякий раз, когда драйверу необходимо обновить пул, он увеличивает число pool.Spec.Pool.Generation и обновляет все ResourceSlices с этим новым числом и новыми определениями ресурсов. Потребитель должен использовать только ResourceSlices с наибольшим номером поколения и игнорировать все остальные.
При распределении всех ресурсов в пуле, соответствующих определённым критериям, или при поиске лучшего решения среди нескольких альтернатив, потребитель должен проверить количество ResourceSlices в пуле (включённое в каждый ResourceSlice), чтобы определить, является ли его представление о пуле полным, и если нет, подождать, пока драйвер не завершит обновление пула.
Для ресурсов, которые не являются локальными для узла, имя узла не устанавливается. Вместо этого драйвер может использовать селектор узлов для указания доступности устройств.
Это тип alpha и требует включения функции DynamicResourceAllocation.
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceSlice
-
metadata (ObjectMeta)
Стандартные метаданные объекта
-
spec (ResourceSliceSpec), необходимо
Содержит информацию, опубликованную драйвером.
Изменение spec автоматически увеличивает число metadata.generation.
ResourceSliceSpec
ResourceSliceSpec содержит информацию, опубликованную драйвером в одном ResourceSlice.
-
driver (строка), необходимо
Драйвер идентифицирует драйвер DRA, предоставляющий информацию о ёмкости. Для перечисления только объектов ResourceSlice с определённым именем драйвера можно использовать селектор полей.
Должен быть поддомен DNS и должен заканчиваться доменом DNS, принадлежащим поставщику драйвера. Это поле неизменяемо.
-
pool (ResourcePool), необходимо
Pool описывает пул, к которому принадлежит данный ResourceSlice.
ResourcePool описывает пул, к которому относятся ResourceSlices.
-
pool.generation (int64), необходимо
Generation отслеживает изменения в пуле со временем. Всякий раз, когда драйвер изменяет что-либо в одном или нескольких ресурсах в пуле, он должен изменить generation во всех ResourceSlices, которые являются частью этого пула. Потребители ResourceSlices должны учитывать только ресурсы из пула с наибольшим номером поколения. Generation может сбрасываться драйверами, что должно быть приемлемо для потребителей, предполагая, что все ResourceSlices в пуле обновляются или удаляются.
В сочетании с ResourceSliceCount этот механизм позволяет потребителям обнаруживать пулы, которые состоят из нескольких ResourceSlices и находятся в неполном состоянии.
-
pool.name (строка), необходимо
Имя используется для идентификации пула. Для узлово-локальных устройств это часто имя узла, но это не обязательно.
Длина не должна превышать 253 символов и должна состоять из одного или нескольких поддоменов DNS, разделенных слешами. Это поле неизменяемо.
-
pool.resourceSliceCount (int64), необходимо
ResourceSliceCount — общее количество ResourceSlices в пуле по номеру текущего поколения. Должно быть больше нуля.
Потребители могут использовать это для проверки, видели ли они все ResourceSlices, принадлежащие одному и тому же пулу.
-
-
allNodes (булево)
AllNodes указывает, что все узлы имеют доступ к ресурсам в пуле.
Должен быть установлен ровно один из NodeName, NodeSelector и AllNodes.
-
devices ([]Device)
Атомарно: будет заменено во время слияния
Devices перечисляет некоторые или все устройства в этом пуле.
Не должно содержать более 128 записей.
Device представляет собой одну отдельную аппаратную инстанцию, которая может быть выбрана на основе своих атрибутов. Помимо имени, ровно одно поле должно быть установлено.
-
devices.name (строка), необходимо
Имя — уникальный идентификатор среди всех устройств, управляемых драйвером в пуле. Это должна быть метка DNS.
-
devices.basic (BasicDevice)
Basic определяет один экземпляр устройства.
BasicDevice определяет один экземпляр устройства.
-
devices.basic.attributes (map[string]DeviceAttribute)
Attributes определяет набор атрибутов для этого устройства. Имя каждого атрибута должно быть уникальным в этом наборе.
Максимальное количество атрибутов и ёмкостей в совокупности составляет 32.
DeviceAttribute должно иметь ровно одно установленное поле.
-
devices.basic.attributes.bool (булево)
BoolValue — значение «истина»/«ложь».
-
devices.basic.attributes.int (int64)
IntValue — число.
-
devices.basic.attributes.string (строка)
StringValue — строка. Длина не должна превышать 64 символа.
-
devices.basic.attributes.version (строка)
VersionValue — семантическая версия в соответствии со спецификацией semver.org 2.0.0. Длина не должна превышать 64 символа.
-
-
devices.basic.capacity (map[string]Quantity)
Capacity определяет набор ёмкостей для этого устройства. Имя каждой ёмкости должно быть уникальным в этом наборе.
Максимальное количество атрибутов и ёмкостей в совокупности составляет 32.
-
-
-
nodeName (строка)
NodeName идентифицирует узел, который предоставляет ресурсы в этом пуле. Для перечисления только объектов ResourceSlice, принадлежащих определённому узлу, можно использовать селектор полей.
Это поле может быть использовано для ограничения доступа от узлов к ResourceSlices с одинаковым именем узла. Оно также указывает автомасштабированию, что добавление новых узлов того же типа, что и некоторые старые узлы, может сделать доступными новые ресурсы.
Должен быть установлен ровно один из NodeName, NodeSelector и AllNodes. Это поле неизменяемо.
-
nodeSelector (NodeSelector)
NodeSelector определяет, какие узлы имеют доступ к ресурсам в пуле, когда этот пул не ограничен одним узлом.
Должен использоваться ровно один термин.
Должен быть установлен ровно один из NodeName, NodeSelector и AllNodes.
Селектор узла представляет собой объединение результатов одного или нескольких запросов меток по набору узлов; то есть он представляет собой ИЛИ селекторов, представленных терминами селектора узла.
-
nodeSelector.nodeSelectorTerms ([]NodeSelectorTerm), необходимо
Атомарно: будет заменено во время слияния
Необходимо. Список терминов селектора узлов. Термины выполняются по оператору ИЛИ.
Нулевой или пустой термин селектора узлов не соответствует ни одному объекту. Требования к ним выполняются по оператору И. Тип TopologySelectorTerm реализует подмножество NodeSelectorTerm.
-
nodeSelector.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)
Атомарно: будет заменено во время слияния
Список требований селектора узлов по меткам узла.
-
nodeSelector.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)
Атомарно: будет заменено во время слияния
Список требований селектора узлов по полям узла.
-
-
ResourceSliceList
ResourceSliceList — это коллекция ResourceSlices.
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceSliceList
-
items ([]ResourceSlice), необходимо
Items — список ресурсов ResourceSlices.
-
metadata (ListMeta)
Стандартные метаданные списка
© 2024 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2024 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/resource-slice-v1alpha3/