×

本指南概述了操作符生命周期管理器 (OLM) 如何使用操作符条件。

关于操作符条件

作为管理操作符生命周期角色的一部分,操作符生命周期管理器 (OLM) 从定义操作符的 Kubernetes 资源的状态推断操作符的状态。虽然这种方法提供了一定程度的保证,即操作符处于给定状态,但在许多情况下,操作符可能需要向 OLM 传达否则无法推断的信息。然后,OLM 可以使用此信息来更好地管理操作符的生命周期。

OLM 提供了一个名为 `OperatorCondition` 的自定义资源定义 (CRD),允许操作符向 OLM 传达条件。当存在于 `OperatorCondition` 资源的 `Spec.Conditions` 数组中时,有一组支持的条件会影响 OLM 对操作符的管理。

默认情况下,除非用户添加或自定义操作符逻辑导致添加,否则 `OperatorCondition` 对象中不存在 `Spec.Conditions` 数组。

支持的条件

操作符生命周期管理器 (OLM) 支持以下操作符条件。

可升级条件

`Upgradeable` 操作符条件阻止将现有集群服务版本 (CSV) 替换为更新版本的 CSV。此条件在以下情况下很有用:

  • 操作符即将启动一个关键进程,并且在该进程完成之前不应升级。

  • 操作符正在执行必须在操作符准备好升级之前完成的自定义资源 (CR) 迁移。

将 `Upgradeable` 操作符条件设置为 `False` 值不会避免 Pod 中断。如果您必须确保您的 Pod 不中断,请参阅“其他资源”部分中的“使用 Pod 中断预算指定必须启动的 Pod 数”和“优雅终止”。

示例 `Upgradeable` 操作符条件
apiVersion: operators.coreos.com/v1
kind: OperatorCondition
metadata:
  name: my-operator
  namespace: operators
spec:
  conditions:
  - type: Upgradeable (1)
    status: "False" (2)
    reason: "migration"
    message: "The Operator is performing a migration."
    lastTransitionTime: "2020-08-24T23:15:55Z"
1 条件的名称。
2 `False` 值表示操作符尚未准备好升级。OLM 阻止替换操作符现有 CSV 的 CSV 离开 `Pending` 阶段。`False` 值不会阻止集群升级。