第 9 章 Machine [machine.openshift.io/v1beta1]


描述
机器是机器 API 兼容性级别 2 的 Schema:在主发行版本中至少为 9 个月或 3 个次版本(以更长的时间为准)。
类型
对象

9.1. 规格

属性类型描述

apiVersion

字符串

APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

metadata

ObjectMeta

标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

对象

MachineSpec 定义所需的 Machine 状态

status

对象

MachineStatus 定义 Machine 的观察状态

9.1.1. .spec

描述
MachineSpec 定义所需的 Machine 状态
类型
object
属性类型描述

lifecycleHooks

object

lifecycleHooks 允许用户在机器生命周期的特定预定义点暂停机器上的操作。

metadata

对象

ObjectMeta 将自动填充所创建的节点。使用此选项来指示创建节点时应使用哪些标签、注解、名称前缀等。

providerID

字符串

providerID 是供应商提供的机器的标识 ID。此字段必须与与此机器对应的节点对象中看到的供应商 ID 匹配。cluster-api 的高级别消费者需要此字段。示例用例是 cluster-api,将 cluster-api 用作供应商。自动缩放器中的清理逻辑将机器与节点进行比较,以查找供应商无法注册为 Kubernetes 节点的机器。使用 cluster-api 作为自动扩展的通用树提供商时,自动扩展需要此字段才能具有机器列表的供应商视图。另一个节点列表是从 k8s apiserver 查询的另一个节点列表,然后做比较以查找未注册的机器并标记为 delete。此字段由行动者设置,并由更高级别的实体(如自动扩展器)使用,该自动扩展将与 cluster-api 作为通用提供程序交互。

providerSpec

对象

providerSpec 详情特定于供应商的配置,以便在节点创建过程中使用。

污点

array

要以增加方式应用到对应节点的污点列表。此列表不会根据其他实体持续覆盖添加到节点的任何其他污点。这些污点应该被主动协调,例如,如果您要求机器控制器应用污点,然后手动删除机器控制器将重新放置的污点,但机器控制器没有删除任何污点

taints[]

对象

此 Taint 附加到任何不容许 Taint 的 pod 上的"effect"的节点。

9.1.2. .spec.lifecycleHooks

描述
lifecycleHooks 允许用户在机器生命周期的特定预定义点暂停机器上的操作。
类型
object
属性类型描述

preDrain

数组

preDrain hook 会阻止机器排空。这也会阻止进一步的生命周期事件,如终止。

preDrain[]

object

LifecycleHook 代表生命周期 hook 的单一实例

preTerminate

数组

preTerminate hook 会阻止机器被终止。在机器排空后,会执行 preTerminate hook。

preTerminate[]

object

LifecycleHook 代表生命周期 hook 的单一实例

9.1.3. .spec.lifecycleHooks.preDrain

描述
preDrain hook 会阻止机器排空。这也会阻止进一步的生命周期事件,如终止。
类型
数组

9.1.4. .spec.lifecycleHooks.preDrain[]

描述
LifecycleHook 代表生命周期 hook 的单一实例
类型
object
必填
  • 名称
  • owner
属性类型描述

name

string

name 为 lifcycle hook 定义唯一名称。名称应是唯一的,最好是 1-3 个单词,在 CamelCase 中,或者可以是命名空间,如 foo.example.com/CamelCase。名称必须是唯一的,并且只能由单个实体管理。

owner

string

Owner 定义生命周期 hook 的所有者。这应该完全描述性,以便用户可以识别谁/负责阻塞生命周期。这可以是控制器的名称(如 clusteroperator/etcd)或管理员管理 hook。

9.1.5. .spec.lifecycleHooks.preTerminate

描述
preTerminate hook 会阻止机器被终止。在机器排空后,会执行 preTerminate hook。
类型
数组

9.1.6. .spec.lifecycleHooks.preTerminate[]

描述
LifecycleHook 代表生命周期 hook 的单一实例
类型
object
必填
  • 名称
  • owner
属性类型描述

name

string

name 为 lifcycle hook 定义唯一名称。名称应是唯一的,最好是 1-3 个单词,在 CamelCase 中,或者可以是命名空间,如 foo.example.com/CamelCase。名称必须是唯一的,并且只能由单个实体管理。

owner

string

Owner 定义生命周期 hook 的所有者。这应该完全描述性,以便用户可以识别谁/负责阻塞生命周期。这可以是控制器的名称(如 clusteroperator/etcd)或管理员管理 hook。

9.1.7. .spec.metadata

描述
ObjectMeta 将自动填充所创建的节点。使用此选项来指示创建节点时应使用哪些标签、注解、名称前缀等。
类型
object
属性类型描述

annotations

对象(字符串)

annotations 是一个无结构的键值映射,它存储有资源,可通过外部工具存储和检索任意元数据。它们不可查询,应在修改对象时保留。更多信息: http://kubernetes.io/docs/user-guide/annotations

generateName

字符串

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

labels

对象(字符串)

可用于组织和分类(范围和选择)对象的字符串键和值映射。可能与复制控制器和服务选择器匹配。更多信息: http://kubernetes.io/docs/user-guide/labels

name

字符串

名称在命名空间中必须是唯一的。创建资源时需要一些资源,但有些资源可能会允许客户端自动请求生成适当名称。name 主要用于创建 idempotence 和配置定义。无法更新。更多信息: http://kubernetes.io/docs/user-guide/identifiers#names

namespace

字符串

namespace 定义每个名称中的空间必须是唯一的。空命名空间等同于 "default" 命名空间,但 "default" 是规范表示。不是所有对象都必须限定到命名空间 - 这些对象的这个字段的值为空。必须是 DNS_LABEL。无法更新。更多信息: http://kubernetes.io/docs/user-guide/namespaces

ownerReferences

array

此对象依赖的对象列表。如果列表中删除列表中的 all 对象,则会收集此对象。如果此对象由控制器管理,则此列表中的一个条目将指向此控制器,controller 字段设为 true。不能有多个管理控制器。

ownerReferences[]

对象

OwnerReference 包含足够信息,供您标识拥有的对象。所属对象必须与依赖的命名空间相同,或是集群范围的,因此没有命名空间字段。

9.1.8. .spec.metadata.ownerReferences

描述
此对象依赖的对象列表。如果列表中删除列表中的 all 对象,则会收集此对象。如果此对象由控制器管理,则此列表中的一个条目将指向此控制器,controller 字段设为 true。不能有多个管理控制器。
类型
array

9.1.9. .spec.metadata.ownerReferences[]

描述
OwnerReference 包含足够信息,供您标识拥有的对象。所属对象必须与依赖的命名空间相同,或是集群范围的,因此没有命名空间字段。
类型
object
必填
  • apiVersion
  • kind
  • name
  • uid
属性类型描述

apiVersion

字符串

引用的 API 版本。

blockOwnerDeletion

布尔值

如果为 true,并且所有者是否有"foregroundDeletion"终结器,则无法从键值存储中删除所有者,直到此引用被删除为止。有关垃圾收集器如何与此字段交互并强制实施前台删除方式,请参阅 https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion。默认为false。要设置此字段,用户需要所有者的"删除"权限,否则将返回 422 (不可处理实体)。

controller

布尔值

如果为 true,则此引用指向管理控制器。

kind

字符串

引用的类型。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

name

字符串

引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names

uid

字符串

引用的 UID。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids

9.1.10. .spec.providerSpec

描述
providerSpec 详情特定于供应商的配置,以便在节点创建过程中使用。
类型
object
属性类型描述

value

``

值是资源配置的内联序列化表示。建议供应商维护自己的版本化 API 类型,这些类型应该从此字段序列化/反序列化到组件配置。

9.1.11. .spec.taints

描述
要以增加方式应用到对应节点的污点列表。此列表不会根据其他实体持续覆盖添加到节点的任何其他污点。这些污点应该被主动协调,例如,如果您要求机器控制器应用污点,然后手动删除机器控制器将重新放置的污点,但机器控制器没有删除任何污点
类型
array

9.1.12. .spec.taints[]

描述
此 Taint 附加到任何不容许 Taint 的 pod 上的"effect"的节点。
类型
object
必填
  • effect
  • key
属性类型描述

effect

字符串

必需。污点对不容许该污点的 pod 的影响。有效效果为 NoSchedule、PreferNoSchedule 和 NoExecute。

key

字符串

必需。要应用到节点的污点键。

timeAdded

字符串

TimeAdded 代表添加污点的时间。它仅针对 NoExecute 污点编写。

value

字符串

与污点键对应的污点值。

9.1.13. .status

描述
MachineStatus 定义 Machine 的观察状态
类型
object
属性类型描述

addresses

array

addresses 是分配给机器的地址列表。从云供应商查询(如果可用)。

addresses[]

对象

NodeAddress 包含节点地址的信息。

conditions

array

Conditions 定义机器的当前状态

conditions[]

对象

condition 定义 Machine API 资源操作状态的观察。

errorMessage

字符串

当存在终端问题协调机器,并将包含更详细的字符串时,会设置 errorMessage。不应为控制器一段时间内自动修复的传输错误设置此字段(如服务中断),而是表示机器规格或控制器配置基本错误,并且需要手动干预。终端错误示例在 spec 中是无效的设置组合、控制器不支持的值,或者负责控制器本身被严重错误配置。机器协调期间发生的任何临时错误都可以作为事件添加到 Machine 对象和/或登录控制器的输出中。

errorReason

字符串

ErrorReason 将在终端问题协调机器时设置 ErrorReason,它将包含一个适合机器解释的 succinct 值。不应为控制器一段时间内自动修复的传输错误设置此字段(如服务中断),而是表示机器规格或控制器配置基本错误,并且需要手动干预。终端错误示例在 spec 中是无效的设置组合、控制器不支持的值,或者负责控制器本身被严重错误配置。机器协调期间发生的任何临时错误都可以作为事件添加到 Machine 对象和/或登录控制器的输出中。

lastOperation

对象

lastOperation 描述了 machine-controller 执行的最后一个操作。此 API 应在特定机器上执行的最新操作方面作为历史记录很有用。它还应传达了 latest-operation 的状态,例如,如果它仍然成功完成、失败或完成。

lastUpdated

字符串

lastUpdated 标识此状态最后观察到的时间。

nodeRef

对象

NodeRef 将指向对应的节点(如果存在)。

phase

字符串

phase 代表机器操作的当前阶段。其中之一: Failed, Provisioning, Provisioned, Running, Deleting

providerStatus

``

ProviderStatus 详细介绍了特定于提供程序的状态。建议供应商维护自己的版本化 API 类型,该类型应该从此字段序列化/反序列化。

9.1.14. .status.addresses

描述
addresses 是分配给机器的地址列表。从云供应商查询(如果可用)。
类型
array

9.1.15. .status.addresses[]

描述
NodeAddress 包含节点地址的信息。
类型
object
必填
  • address
  • type
属性类型描述

address

字符串

节点地址。

type

字符串

节点地址类型,一个用于 Hostname、ExternalIP 或 InternalIP 之一。

9.1.16. .status.conditions

描述
Conditions 定义机器的当前状态
类型
array

9.1.17. .status.conditions[]

描述
condition 定义 Machine API 资源操作状态的观察。
类型
object
属性类型描述

lastTransitionTime

字符串

条件从一个状态转换到另一个状态最后一次的时间。这应该是底层条件变化的时间。如果为未知,则使用 API 字段更改的时间是可以接受的。

message

字符串

人类可读的消息,指示有关转换的详细信息。此字段可能为空。

reason

字符串

在 CamelCase 中条件最后一次转换的原因。特定的 API 可能会选择此字段是否被视为有保证的 API。此字段可能不是空的。

严重性

字符串

严重性提供了明确的 Reason 代码分类,因此用户或机器可以立即了解当前的情况并相应地操作。Severity 字段必须只在 Status=False 时才会设置。

status

字符串

条件的状态,True, False, Unknown 之一。

type

字符串

CamelCase 或 foo.example.com/CamelCase 中的条件类型。许多 .condition.type 值在 Available 资源之间是一致的,但由于任意条件可能很有用(请参阅 .node.status.conditions),不限制性非常重要。

9.1.18. .status.lastOperation

描述
lastOperation 描述了 machine-controller 执行的最后一个操作。此 API 应在特定机器上执行的最新操作方面作为历史记录很有用。它还应传达了 latest-operation 的状态,例如,如果它仍然成功完成、失败或完成。
类型
object
属性类型描述

description

字符串

description 是最后一次操作的人类可读描述。

lastUpdated

字符串

lastUpdated 是 LastOperation API 为 last-updated 的时间戳。

state

字符串

state 是最后一次执行的操作的当前状态。例如处理、失败、成功等

type

字符串

type 是最近执行的操作类型。例如创建、删除、更新等

9.1.19. .status.nodeRef

描述
NodeRef 将指向对应的节点(如果存在)。
类型
object
属性类型描述

apiVersion

字符串

引用的 API 版本。

fieldPath

字符串

如果引用的是对象的一部分而非整个对象,则该字符串应包含有效的 JSON/Go 字段访问声明,如 desiredState.manifest.containers[2]。例如,如果对象引用是一个 pod 中的容器,它应该还以下类似: "spec.containers{name}"(其中 "name" 是指触发事件的容器的名称),如果不使用容器名称,则应类似于 "spec.containers[2]"(使用此 pod 中索引值为 2 的容器)。选择这个语法的原因是,为了有一些指向对象部分的正确定义方法。Todo: 这个设计不是最终设计的,且该字段在将来会有所改变。

kind

字符串

引用的类型。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

name

字符串

引用的名称。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

namespace

字符串

引用的命名空间。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

resourceVersion

字符串

指定构成这个引用的 resourceVersion(如果存在)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency

uid

字符串

引用的 UID。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.