第 6 章 ClusterVersion [config.openshift.io/v1]
- 描述
- ClusterVersion 是 ClusterVersionOperator 的配置。这是可以设置与自动更新相关的参数的位置。兼容性级别 1:在主发行版本中至少提供 12 个月或 3 个次版本(以更长的时间为准)。
- 类型
-
object
- 必填
-
spec
-
6.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 | |
|
| spec 是集群版本的所需状态 - Operator 可以正常工作,以确保将所需的版本应用到集群。 |
|
| status 包含有关可用更新以及任何 in-progress 更新的信息。 |
6.1.1. .spec
- 描述
- spec 是集群版本的所需状态 - Operator 可以正常工作,以确保将所需的版本应用到集群。
- 类型
-
object
- 必填
-
clusterID
-
属性 | 类型 | 描述 |
---|---|---|
|
| capabilities 配置可选的、核心集群组件的安装。这里的 null 值与空对象相同;请参阅子属性以了解默认语义。 |
|
| 频道是明确请求一组非默认更新集的标识符。默认频道将包含适合生产集群的稳定更新。 |
|
| clusterid 唯一标识此集群。这应该是一个 RFC4122 UUID 值(xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxx)。这是必填字段。 |
|
| desiredUpdate 是一个可选字段,表示集群版本所需的值。设置此值将触发升级(如果当前版本与所需的版本不匹配)。推荐的更新值集合作为 status 中的可用更新的一部分,设置超出该范围的值可能会导致升级失败。其中一些字段与限制和这里描述的含义相关。1. 镜像被指定,指定了版本,架构会被指定。API 验证错误。2. 镜像被指定,未指定版本,未指定架构。您不应该这样做。版本被静默忽略,并使用镜像。3. 镜像被指定,未指定版本,架构会被指定。API 验证错误。4. 镜像被指定,未指定版本,未指定架构。镜像被使用。5. 未指定镜像,指定了版本,架构会被指定。使用所需架构来选择镜像。6 未指定镜像,未指定版本,系统未指定架构。使用当前架构来选择镜像。7. 镜像没有指定,未指定版本,架构会被指定。API 验证错误。8. image 没有指定,未指定版本,未指定构架。API 验证错误。如果升级失败,Operator 将停止并报告失败组件的状态。将所需的更新值设置为以前的版本会导致尝试回滚。并非所有回滚都将成功。 |
|
| overrides 是由集群版本操作器管理的组件覆盖列表。标记组件非受管状态将阻止 Operator 创建或更新对象。 |
|
| ComponentOverride 允许覆盖组件的集群版本 Operator 的行为。 |
|
| upstream 可以用来指定首选的更新服务器。默认情况下,它将对集群和地区使用适当的更新服务器。 |
6.1.2. .spec.capabilities
- 描述
- capabilities 配置可选的、核心集群组件的安装。这里的 null 值与空对象相同;请参阅子属性以了解默认语义。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| additionalEnabledCapabilities 扩展一组受管功能超过 baselineCapabilitySet 中定义的基准。默认值为空集。 |
|
| baselineCapabilitySet 选择要启用的一组初始可选功能,这可以通过 additionalEnabledCapabilities 扩展。如果未设置,集群将选择一个默认值,默认可能会随时间改变。当前默认为 vCurrent。 |
6.1.3. .spec.desiredUpdate
- 描述
- desiredUpdate 是一个可选字段,表示集群版本所需的值。设置此值将触发升级(如果当前版本与所需的版本不匹配)。推荐的更新值集合作为 status 中的可用更新的一部分,设置超出该范围的值可能会导致升级失败。其中一些字段与限制和这里描述的含义相关。1. 镜像被指定,指定了版本,架构会被指定。API 验证错误。2. 镜像被指定,未指定版本,未指定架构。您不应该这样做。版本被静默忽略,并使用镜像。3. 镜像被指定,未指定版本,架构会被指定。API 验证错误。4. 镜像被指定,未指定版本,未指定架构。镜像被使用。5. 未指定镜像,指定了版本,架构会被指定。使用所需架构来选择镜像。6 未指定镜像,未指定版本,系统未指定架构。使用当前架构来选择镜像。7. 镜像没有指定,未指定版本,架构会被指定。API 验证错误。8. image 没有指定,未指定版本,未指定构架。API 验证错误。如果升级失败,Operator 将停止并报告失败组件的状态。将所需的更新值设置为以前的版本会导致尝试回滚。并非所有回滚都将成功。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| architecture 是一个可选字段,用于指示集群架构所需的值。在这种上下文中,集群架构意味着单个架构或多架构。架构只能设置为 Multi,因此只允许从单一到多架构的更新。如果设置了架构,则无法设置镜像,而且必须设置版本。有效值为 'Multi' 和 empty。 |
|
| force 允许管理员更新到一个已验证或可升级检查的镜像。只有在验证了带外的镜像的真实性时才应使用此选项,因为提供的镜像将使用集群的完全管理访问权限运行。不要将此标志与来自未知或潜在恶意源的镜像一起使用。 |
|
| Image 是一个包含更新的容器镜像位置。当所需版本没有存在于 availableUpdates 或 history 中时,应使用镜像。设置镜像时,版本将被忽略。设置镜像后,版本应为空。设置镜像时,无法指定架构。 |
|
| Version 是一个语义版本,标识更新版本。如果指定了镜像,则忽略版本。如果指定架构,则需要版本。 |
6.1.4. .spec.overrides
- 描述
- overrides 是由集群版本操作器管理的组件覆盖列表。标记组件非受管状态将阻止 Operator 创建或更新对象。
- 类型
-
array
6.1.5. .spec.overrides[]
- 描述
- ComponentOverride 允许覆盖组件的集群版本 Operator 的行为。
- 类型
-
object
- 必填
-
group
-
kind
-
name
-
namespace
-
Unmanaged
-
属性 | 类型 | 描述 |
---|---|---|
|
| Group 标识 kind 所在 API 组。 |
|
| 缩进要覆盖的对象。 |
|
| name 是组件的名称。 |
|
| namespace 是组件的命名空间。如果资源是集群范围,命名空间应该为空。 |
|
| 非受管控制,如果集群版本操作器是否应该停止管理此集群中的资源。默认:false |
6.1.6. .status
- 描述
- status 包含有关可用更新以及任何 in-progress 更新的信息。
- 类型
-
object
- 必填
-
所需
-
observedGeneration
-
versionHash
-
属性 | 类型 | 描述 |
---|---|---|
| `` | availableUpdates 包含为这个集群推荐的更新。条件更新但未在 availableUpdates 中出现的更新可能会将这个集群公开给已知的问题。如果没有更新,或者指定了无效的频道,则此列表可能为空。 |
|
| capabilities 描述了可选、核心集群组件的状态。 |
|
| conditionalUpdates 包含在这个集群满足特定所需条件时可能推荐的更新列表。对实际推荐的更新集感兴趣的消费者,应该使用 availableUpdates。如果没有更新,如果没有更新服务,或者指定了空或无效的频道,则此列表可能为空。 |
|
| ConditionalUpdate 代表一个更新,建议把当前集群上的一些集群协调,但可能不建议在当前集群中使用。 |
|
| 条件提供有关集群版本的信息。如果达到 desiredUpdate,则条件 "Available" 被设置为 true。如果应用了更新,则条件 "Progressing" 被设置为 true。如果更新当前被临时或永久错误阻止,则条件 "Degraded" 被设置为 true。当 metadata.generation 等于 status.generation 时,条件仅对当前 desiredUpdate 有效。 |
|
| ClusterOperatorStatusCondition 代表 Operator 的受管和监控组件的状态。 |
|
| 所需是集群协调的版本。如果集群尚未完全初始化,则将使用可用的信息来设置,这些信息可能是镜像或标签。 |
|
| history 包含应用到集群的最新版本的列表。这个值在集群启动过程中可能为空,然后在应用新更新时更新。最新更新在列表中的第一个,按 recency 排序。如果完成推出部署,则历史记录中的更新状态为 Completed - 如果更新失败或应用了一半,则状态将为 Partial。只有有限数量的更新历史记录会被保留。 |
|
| UpdateHistory 是对集群的单个尝试更新。 |
|
| observedGeneration 报告正在同步哪个 spec 版本。如果这个值不等于 metadata.generation,则所需的和条件字段可能代表之前的版本。 |
|
| versionHash 是集群将要更新的内容的指纹。Operator 使用它来避免不必要的工作,仅用于内部使用。 |
6.1.7. .status.capabilities
- 描述
- capabilities 描述了可选、核心集群组件的状态。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| enabledCapabilities 列出了当前管理的所有功能。 |
|
| knownCapabilities 列出当前集群已知的所有功能。 |
6.1.8. .status.conditionalUpdates
- 描述
- conditionalUpdates 包含在这个集群满足特定所需条件时可能推荐的更新列表。对实际推荐的更新集感兴趣的消费者,应该使用 availableUpdates。如果没有更新,如果没有更新服务,或者指定了空或无效的频道,则此列表可能为空。
- 类型
-
数组
6.1.9. .status.conditionalUpdates[]
- 描述
- ConditionalUpdate 代表一个更新,建议把当前集群上的一些集群协调,但可能不建议在当前集群中使用。
- 类型
-
object
- 必填
-
release
-
risks
-
属性 | 类型 | 描述 |
---|---|---|
|
| 条件代表条件更新当前状态的观察。已知类型是:建议,是否推荐对当前集群进行更新。 |
|
|
条件包含此 API 资源当前状态的一个方面的详情。--- 这个结构旨在直接用作字段路径 .status.conditions 中的数组。例如,输入 FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition |
|
| Release 是更新的目标。 |
|
| 风险代表了与升级到目标发行版本相关的问题范围。cluster-version operator 将评估所有条目,只有在至少有一个条目和所有条目都推荐更新时才建议更新。 |
|
| ConditionalUpdateRisk 代表不推荐条件更新的原因和 cluster-state。 |
6.1.10. .status.conditionalUpdates[].conditions
- 描述
- 条件代表条件更新当前状态的观察。已知类型是:建议,是否推荐对当前集群进行更新。
- 类型
-
数组
6.1.11. .status.conditionalUpdates[].conditions[]
- 描述
-
条件包含此 API 资源当前状态的一个方面的详情。--- 这个结构旨在直接用作字段路径 .status.conditions 中的数组。例如,输入 FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition
json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"
// other fields } - 类型
-
object
- 必填
-
lastTransitionTime
-
message
-
reason
-
status
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| lastTransitionTime 是条件从一个状态转换到另一个状态最后一次的时间。这应该是底层条件变化的时间。如果为未知,则使用 API 字段更改的时间是可以接受的。 |
|
| Message 是人类可读的消息,指示有关转换的详细信息。这可能是一个空字符串。 |
|
| observedGeneration 代表 .metadata.generation,这是条件设置所基于的条件。例如,如果 .metadata.generation 目前为 12,但 .status.conditions[x].observedGeneration 是 9,则代表条件与实例的当前状态已不匹配。 |
|
| reason 包含程序标识符,指示条件最后一次转换的原因。特定条件类型的制作者可能会定义预期的值和此字段的含义,以及这些值是否被视为有保证的 API。该值应该是 CamelCase 字符串。此字段可能不是空的。 |
|
| 条件的状态,True, False, Unknown 之一。 |
|
| CamelCase 或 foo.example.com/CamelCase 中的条件类型。-- Many .condition.type 值在资源间是一致的,但因为任意条件可能很有用(请参阅 .node.status.conditions),deconflict 的能力非常重要。它匹配的正则表达式是 (dns1123SubdomainFmt/)? (qualifiedNameFmt) |
6.1.12. .status.conditionalUpdates[].release
- 描述
- Release 是更新的目标。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| channels 是当前发行版本所属的 Cincinnati 频道集合。 |
|
| image 是包含更新的容器镜像位置。当此字段是 spec 的一部分时,如果指定了 version,并且 availableUpdates 字段包含匹配的版本,则 image 是可选的。 |
|
| URL 包含有关此版本的信息。此 URL 由发行版本上的 'url' metadata 属性或更新 API 返回的元数据设置,应该以用户界面中的链接的形式显示。对于测试或每日发行版本,无法设置 URL 字段。 |
|
| version 是一个语义版本,用于标识更新版本。当此字段是 spec 的一部分时,如果指定了 image,则 version 是可选的。 |
6.1.13. .status.conditionalUpdates[].risks
- 描述
- 风险代表了与升级到目标发行版本相关的问题范围。cluster-version operator 将评估所有条目,只有在至少有一个条目和所有条目都推荐更新时才建议更新。
- 类型
-
数组
6.1.14. .status.conditionalUpdates[].risks[]
- 描述
- ConditionalUpdateRisk 代表不推荐条件更新的原因和 cluster-state。
- 类型
-
object
- 必填
-
matchingRules
-
message
-
名称
-
url
-
属性 | 类型 | 描述 |
---|---|---|
|
| matchingRules 是一个条件片段,用于决定哪个集群与风险匹配且不匹配。片段按降低的优先级排序。cluster-version 操作器将按顺序处理片段,并在第一个可以成功评估后停止。如果没有成功评估条件,则不建议更新。 |
|
| clusterCondition 是输入的集群条件的联合。'type' 属性决定特定于类型的属性是相关的。在集群上评估时,条件可以匹配、不匹配或无法评估。 |
|
| Message 提供有关更新风险的附加信息,当匹配的Rules 与集群状态匹配时。这只能被人类使用。它可以包含行 Feed 字符(U+000A),该字符应作为新行呈现。 |
|
| name 是不推荐条件更新的 CamelCase 原因,当匹配的Rules 与集群状态匹配时。 |
|
| URL 包含有关此风险的信息。 |
6.1.15. .status.conditionalUpdates[].risks[].matchingRules
- 描述
- matchingRules 是一个条件片段,用于决定哪个集群与风险匹配且不匹配。片段按降低的优先级排序。cluster-version 操作器将按顺序处理片段,并在第一个可以成功评估后停止。如果没有成功评估条件,则不建议更新。
- 类型
-
数组
6.1.16. .status.conditionalUpdates[].risks[].matchingRules[]
- 描述
- clusterCondition 是输入的集群条件的联合。'type' 属性决定特定于类型的属性是相关的。在集群上评估时,条件可以匹配、不匹配或无法评估。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| PromQL 代表基于 PromQL 的集群条件。 |
|
| Type 代表 cluster-condition 类型。这将定义任何其他属性的成员和语义。 |
6.1.17. .status.conditionalUpdates[].risks[].matchingRules[].promql
- 描述
- PromQL 代表基于 PromQL 的集群条件。
- 类型
-
object
- 必填
-
promql
-
属性 | 类型 | 描述 |
---|---|---|
|
| PromQL 是一个 PromQL 查询分类集群。此查询应在匹配情况下返回 1,在 does-not-match 情况下返回 0。不返回时间序列的查询,或者返回 0 或 1 以外的值是评估失败。 |
6.1.18. .status.conditions
- 描述
- 条件提供有关集群版本的信息。如果达到 desiredUpdate,则条件 "Available" 被设置为 true。如果应用了更新,则条件 "Progressing" 被设置为 true。如果更新当前被临时或永久错误阻止,则条件 "Degraded" 被设置为 true。当 metadata.generation 等于 status.generation 时,条件仅对当前 desiredUpdate 有效。
- 类型
-
array
6.1.19. .status.conditions[]
- 描述
- ClusterOperatorStatusCondition 代表 Operator 的受管和监控组件的状态。
- 类型
-
object
- 必填
-
lastTransitionTime
-
status
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| lastTransitionTime 是当前 status 属性最后一次更新的时间。 |
|
| Message 提供有关当前条件的附加信息。这只能被人类使用。它可以包含行 Feed 字符(U+000A),该字符应作为新行呈现。 |
|
| reason 是条件当前状态的 CamelCase 原因。 |
|
| 条件的状态,True, False, Unknown 之一。 |
|
| Type 指定此条件报告的方面。 |
6.1.20. .status.desired
- 描述
- 所需是集群协调的版本。如果集群尚未完全初始化,则将使用可用的信息来设置,这些信息可能是镜像或标签。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| channels 是当前发行版本所属的 Cincinnati 频道集合。 |
|
| image 是包含更新的容器镜像位置。当此字段是 spec 的一部分时,如果指定了 version,并且 availableUpdates 字段包含匹配的版本,则 image 是可选的。 |
|
| URL 包含有关此版本的信息。此 URL 由发行版本上的 'url' metadata 属性或更新 API 返回的元数据设置,应该以用户界面中的链接的形式显示。对于测试或每日发行版本,无法设置 URL 字段。 |
|
| version 是一个语义版本,用于标识更新版本。当此字段是 spec 的一部分时,如果指定了 image,则 version 是可选的。 |
6.1.21. .status.history
- 描述
- history 包含应用到集群的最新版本的列表。这个值在集群启动过程中可能为空,然后在应用新更新时更新。最新更新在列表中的第一个,按 recency 排序。如果完成推出部署,则历史记录中的更新状态为 Completed - 如果更新失败或应用了一半,则状态将为 Partial。只有有限数量的更新历史记录会被保留。
- 类型
-
array
6.1.22. .status.history[]
- 描述
- UpdateHistory 是对集群的单个尝试更新。
- 类型
-
object
- 必填
-
image
-
startedTime
-
state
-
已验证
-
属性 | 类型 | 描述 |
---|---|---|
|
| acceptedRisks 记录被接受启动更新的风险。例如,它可能会认为一个 Upgradeable=False,或缺少通过 desiredUpdate.force 覆盖的签名,或者没有处于 availableUpdates 组推荐的更新目标。 |
| `` | completionTime (如果设置)是完全应用更新的时间。当前应用的更新将有一个 null completion 时间。总会为不是当前更新的条目设置完成时间(通常是下一次更新的开始时间)。 |
|
| image 是包含更新的容器镜像位置。这个值始终会被填充。 |
|
| startedTime 是启动更新的时间。 |
|
| State 反映了是否完全应用更新。Partial 状态表示更新没有被完全应用,但 Completed 状态表示更新至少一次(更新的所有部分都成功应用)。 |
|
| 验证指示提供的更新是否在安装前正确验证。如果这是 false,则集群可能无法被信任。验证,在接受更新目标时,未涵盖依赖于集群状态的可升级检查。 |
|
| version 是一个语义版本,用于标识更新版本。如果请求的镜像没有定义版本,或者检索镜像失败,则该值可能为空。 |