第 10 章 MachineSet [machine.openshift.io/v1beta1]
- 描述
- MachineSet 确保在任意给定时间运行指定数量的机器副本。兼容性级别 2:在主发行版本中至少为 9 个月或 3 个次版本(以更长的时间为准)。
- 类型
-
对象
10.1. 规格
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| MachineSetSpec 定义所需的 MachineSet 状态 |
|
| MachineSetStatus 定义 MachineSet 的观察状态 |
10.1.1. .spec
- 描述
- MachineSetSpec 定义所需的 MachineSet 状态
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| DeletePolicy 定义在缩减时用来识别要删除的节点的策略。默认为 "Random"。有效值为 "Random, "Newest", "Oldest" |
|
| MinReadySeconds 是新创建的机器应准备好的最小秒数。默认为 0 (计算机在就绪后立即被视为可用) |
|
| replicas 是所需副本数。这是一个指针,用于区分显式零和未指定的。默认为 1。 |
|
| 选择器是对应该与副本数匹配的机器的标签查询。要由此 MachineSet 控制标签键和值,必须匹配。它必须与机器模板的标签匹配。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors |
|
| 模板是描述在检测到副本不足时将创建的机器的对象。 |
10.1.2. .spec.selector
- 描述
- 选择器是对应该与副本数匹配的机器的标签查询。要由此 MachineSet 控制标签键和值,必须匹配。它必须与机器模板的标签匹配。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。 |
|
| 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。 |
|
| matchLabels 是 {key,value} 对的映射。MatchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。 |
10.1.3. .spec.selector.matchExpressions
- 描述
- matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。
- 类型
-
array
10.1.4. .spec.selector.matchExpressions[]
- 描述
- 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。
- 类型
-
object
- 必填
-
key
-
operator
-
属性 | 类型 | 描述 |
---|---|---|
|
| key 是选择器应用到的标签键。 |
|
| 运算符代表一个键与一组值的关系。有效的运算符是 In、NotIn、Exists 和 DoesNotExist。 |
|
| 值是字符串值的数组。如果运算符是 In 或 NotIn,则值数组必须是非空的。如果运算符是 Exists 或 DoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。 |
10.1.5. .spec.template
- 描述
- 模板是描述在检测到副本不足时将创建的机器的对象。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata |
|
| 指定机器所需行为的规格。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status |
10.1.6. .spec.template.metadata
- 描述
- 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| annotations 是一个无结构的键值映射,它存储有资源,可通过外部工具存储和检索任意元数据。它们不可查询,应在修改对象时保留。更多信息: http://kubernetes.io/docs/user-guide/annotations |
|
| generateName 是一个可选前缀,服务器使用它来生成唯一的名称 IF,即未提供 Name 字段。如果使用此字段,返回到客户端的名称将与传递的名称不同。这个值也会与唯一的后缀合并。provided 值的验证规则与 Name 字段相同,并可能由使值在服务器上唯一要求的后缀长度截断。如果指定了此字段并且存在生成的名称,服务器将不会返回 409 -,它会返回 201 Created 或 500 with Reason ServerTimeout,表示无法在分配时找到唯一名称,并且客户端应重试(可选在 Retry-After 标头中指定的时间之后)。仅在未指定 Name 时应用。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency |
|
| 可用于组织和分类(范围和选择)对象的字符串键和值映射。可能与复制控制器和服务选择器匹配。更多信息: http://kubernetes.io/docs/user-guide/labels |
|
| 名称在命名空间中必须是唯一的。创建资源时需要一些资源,但有些资源可能会允许客户端自动请求生成适当名称。name 主要用于创建 idempotence 和配置定义。无法更新。更多信息: http://kubernetes.io/docs/user-guide/identifiers#names |
|
| namespace 定义每个名称中的空间必须是唯一的。空命名空间等同于 "default" 命名空间,但 "default" 是规范表示。不是所有对象都必须限定到命名空间 - 这些对象的这个字段的值为空。必须是 DNS_LABEL。无法更新。更多信息: http://kubernetes.io/docs/user-guide/namespaces |
|
| 此对象依赖的对象列表。如果列表中删除列表中的 all 对象,则会收集此对象。如果此对象由控制器管理,则此列表中的一个条目将指向此控制器,controller 字段设为 true。不能有多个管理控制器。 |
|
| OwnerReference 包含足够信息,供您标识拥有的对象。所属对象必须与依赖的命名空间相同,或是集群范围的,因此没有命名空间字段。 |
10.1.7. .spec.template.metadata.ownerReferences
- 描述
- 此对象依赖的对象列表。如果列表中删除列表中的 all 对象,则会收集此对象。如果此对象由控制器管理,则此列表中的一个条目将指向此控制器,controller 字段设为 true。不能有多个管理控制器。
- 类型
-
array
10.1.8. .spec.template.metadata.ownerReferences[]
- 描述
- OwnerReference 包含足够信息,供您标识拥有的对象。所属对象必须与依赖的命名空间相同,或是集群范围的,因此没有命名空间字段。
- 类型
-
object
- 必填
-
apiVersion
-
kind
-
name
-
uid
-
属性 | 类型 | 描述 |
---|---|---|
|
| 引用的 API 版本。 |
|
| 如果为 true,并且所有者是否有"foregroundDeletion"终结器,则无法从键值存储中删除所有者,直到此引用被删除为止。有关垃圾收集器如何与此字段交互并强制实施前台删除方式,请参阅 https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion。默认为false。要设置此字段,用户需要所有者的"删除"权限,否则将返回 422 (不可处理实体)。 |
|
| 如果为 true,则此引用指向管理控制器。 |
|
| 引用的类型。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names |
|
| 引用的 UID。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids |
10.1.9. .spec.template.spec
- 描述
- 指定机器所需行为的规格。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| lifecycleHooks 允许用户在机器生命周期的特定预定义点暂停机器上的操作。 |
|
| ObjectMeta 将自动填充所创建的节点。使用此选项来指示创建节点时应使用哪些标签、注解、名称前缀等。 |
|
| providerID 是供应商提供的机器的标识 ID。此字段必须与与此机器对应的节点对象中看到的供应商 ID 匹配。cluster-api 的高级别消费者需要此字段。示例用例是 cluster-api,将 cluster-api 用作供应商。自动缩放器中的清理逻辑将机器与节点进行比较,以查找供应商无法注册为 Kubernetes 节点的机器。使用 cluster-api 作为自动扩展的通用树提供商时,自动扩展需要此字段才能具有机器列表的供应商视图。另一个节点列表是从 k8s apiserver 查询的另一个节点列表,然后做比较以查找未注册的机器并标记为 delete。此字段由行动者设置,并由更高级别的实体(如自动扩展器)使用,该自动扩展将与 cluster-api 作为通用提供程序交互。 |
|
| providerSpec 详情特定于供应商的配置,以便在节点创建过程中使用。 |
|
| 要以增加方式应用到对应节点的污点列表。此列表不会根据其他实体持续覆盖添加到节点的任何其他污点。这些污点应该被主动协调,例如,如果您要求机器控制器应用污点,然后手动删除机器控制器将重新放置的污点,但机器控制器没有删除任何污点 |
|
| 此 Taint 附加到任何不容许 Taint 的 pod 上的"effect"的节点。 |
10.1.10. .spec.template.spec.lifecycleHooks
- 描述
- lifecycleHooks 允许用户在机器生命周期的特定预定义点暂停机器上的操作。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| preDrain hook 会阻止机器排空。这也会阻止进一步的生命周期事件,如终止。 |
|
| LifecycleHook 代表生命周期 hook 的单一实例 |
|
| preTerminate hook 会阻止机器被终止。在机器排空后,会执行 preTerminate hook。 |
|
| LifecycleHook 代表生命周期 hook 的单一实例 |
10.1.11. .spec.template.spec.lifecycleHooks.preDrain
- 描述
- preDrain hook 会阻止机器排空。这也会阻止进一步的生命周期事件,如终止。
- 类型
-
数组
10.1.12. .spec.template.spec.lifecycleHooks.preDrain[]
- 描述
- LifecycleHook 代表生命周期 hook 的单一实例
- 类型
-
object
- 必填
-
名称
-
owner
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 为 lifcycle hook 定义唯一名称。名称应是唯一的,最好是 1-3 个单词,在 CamelCase 中,或者可以是命名空间,如 foo.example.com/CamelCase。名称必须是唯一的,并且只能由单个实体管理。 |
|
| Owner 定义生命周期 hook 的所有者。这应该完全描述性,以便用户可以识别谁/负责阻塞生命周期。这可以是控制器的名称(如 clusteroperator/etcd)或管理员管理 hook。 |
10.1.13. .spec.template.spec.lifecycleHooks.preTerminate
- 描述
- preTerminate hook 会阻止机器被终止。在机器排空后,会执行 preTerminate hook。
- 类型
-
数组
10.1.14. .spec.template.spec.lifecycleHooks.preTerminate[]
- 描述
- LifecycleHook 代表生命周期 hook 的单一实例
- 类型
-
object
- 必填
-
名称
-
owner
-
属性 | 类型 | 描述 |
---|---|---|
|
| name 为 lifcycle hook 定义唯一名称。名称应是唯一的,最好是 1-3 个单词,在 CamelCase 中,或者可以是命名空间,如 foo.example.com/CamelCase。名称必须是唯一的,并且只能由单个实体管理。 |
|
| Owner 定义生命周期 hook 的所有者。这应该完全描述性,以便用户可以识别谁/负责阻塞生命周期。这可以是控制器的名称(如 clusteroperator/etcd)或管理员管理 hook。 |
10.1.15. .spec.template.spec.metadata
- 描述
- ObjectMeta 将自动填充所创建的节点。使用此选项来指示创建节点时应使用哪些标签、注解、名称前缀等。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| annotations 是一个无结构的键值映射,它存储有资源,可通过外部工具存储和检索任意元数据。它们不可查询,应在修改对象时保留。更多信息: http://kubernetes.io/docs/user-guide/annotations |
|
| generateName 是一个可选前缀,服务器使用它来生成唯一的名称 IF,即未提供 Name 字段。如果使用此字段,返回到客户端的名称将与传递的名称不同。这个值也会与唯一的后缀合并。provided 值的验证规则与 Name 字段相同,并可能由使值在服务器上唯一要求的后缀长度截断。如果指定了此字段并且存在生成的名称,服务器将不会返回 409 -,它会返回 201 Created 或 500 with Reason ServerTimeout,表示无法在分配时找到唯一名称,并且客户端应重试(可选在 Retry-After 标头中指定的时间之后)。仅在未指定 Name 时应用。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency |
|
| 可用于组织和分类(范围和选择)对象的字符串键和值映射。可能与复制控制器和服务选择器匹配。更多信息: http://kubernetes.io/docs/user-guide/labels |
|
| 名称在命名空间中必须是唯一的。创建资源时需要一些资源,但有些资源可能会允许客户端自动请求生成适当名称。name 主要用于创建 idempotence 和配置定义。无法更新。更多信息: http://kubernetes.io/docs/user-guide/identifiers#names |
|
| namespace 定义每个名称中的空间必须是唯一的。空命名空间等同于 "default" 命名空间,但 "default" 是规范表示。不是所有对象都必须限定到命名空间 - 这些对象的这个字段的值为空。必须是 DNS_LABEL。无法更新。更多信息: http://kubernetes.io/docs/user-guide/namespaces |
|
| 此对象依赖的对象列表。如果列表中删除列表中的 all 对象,则会收集此对象。如果此对象由控制器管理,则此列表中的一个条目将指向此控制器,controller 字段设为 true。不能有多个管理控制器。 |
|
| OwnerReference 包含足够信息,供您标识拥有的对象。所属对象必须与依赖的命名空间相同,或是集群范围的,因此没有命名空间字段。 |
10.1.16. .spec.template.spec.metadata.ownerReferences
- 描述
- 此对象依赖的对象列表。如果列表中删除列表中的 all 对象,则会收集此对象。如果此对象由控制器管理,则此列表中的一个条目将指向此控制器,controller 字段设为 true。不能有多个管理控制器。
- 类型
-
array
10.1.17. .spec.template.spec.metadata.ownerReferences[]
- 描述
- OwnerReference 包含足够信息,供您标识拥有的对象。所属对象必须与依赖的命名空间相同,或是集群范围的,因此没有命名空间字段。
- 类型
-
object
- 必填
-
apiVersion
-
kind
-
name
-
uid
-
属性 | 类型 | 描述 |
---|---|---|
|
| 引用的 API 版本。 |
|
| 如果为 true,并且所有者是否有"foregroundDeletion"终结器,则无法从键值存储中删除所有者,直到此引用被删除为止。有关垃圾收集器如何与此字段交互并强制实施前台删除方式,请参阅 https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion。默认为false。要设置此字段,用户需要所有者的"删除"权限,否则将返回 422 (不可处理实体)。 |
|
| 如果为 true,则此引用指向管理控制器。 |
|
| 引用的类型。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
|
| 引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names |
|
| 引用的 UID。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids |
10.1.18. .spec.template.spec.providerSpec
- 描述
- providerSpec 详情特定于供应商的配置,以便在节点创建过程中使用。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
| `` | 值是资源配置的内联序列化表示。建议供应商维护自己的版本化 API 类型,这些类型应该从此字段序列化/反序列化到组件配置。 |
10.1.19. .spec.template.spec.taints
- 描述
- 要以增加方式应用到对应节点的污点列表。此列表不会根据其他实体持续覆盖添加到节点的任何其他污点。这些污点应该被主动协调,例如,如果您要求机器控制器应用污点,然后手动删除机器控制器将重新放置的污点,但机器控制器没有删除任何污点
- 类型
-
array
10.1.20. .spec.template.spec.taints[]
- 描述
- 此 Taint 附加到任何不容许 Taint 的 pod 上的"effect"的节点。
- 类型
-
object
- 必填
-
effect
-
key
-
属性 | 类型 | 描述 |
---|---|---|
|
| 必需。污点对不容许该污点的 pod 的影响。有效效果为 NoSchedule、PreferNoSchedule 和 NoExecute。 |
|
| 必需。要应用到节点的污点键。 |
|
| TimeAdded 代表添加污点的时间。它仅针对 NoExecute 污点编写。 |
|
| 与污点键对应的污点值。 |
10.1.21. .status
- 描述
- MachineSetStatus 定义 MachineSet 的观察状态
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 此 MachineSet 的可用副本数(至少为 minReadySeconds)。 |
|
| |
|
| 如果终端问题协调副本,则会设置 ErrorReason 和 ErrorMessage。ErrorReason 将填充适合机器解释的 succinct 值,而 ErrorMessage 将包含更详细的字符串,适合日志记录和人为消耗。这些字段不应设置为传输错误,因为控制器会随着时间的推移自动修复(如服务中断),而是表示 MachineTemplate 的 spec 或机器配置需要手动干预。终端错误示例在 spec 中是无效的设置组合,机器控制器不支持的值,或者负责的机器控制器本身被严重错误配置。在 Machine 协调过程中发生的任何临时错误都可以作为事件添加到 MachineSet 对象和/或登录控制器的输出中。 |
|
| 具有与 MachineSet 机器模板标签匹配的副本数量。 |
|
| observedGeneration 反映了最近观察到的 MachineSet 的生成。 |
|
| 此 MachineSet 的就绪副本数。当节点被创建并且为"Ready"时,机器被视为就绪。 |
|
| replicas 是最近观察到的副本数。 |