×

本指南概述了 Operator 生命周期管理器 (OLM) 如何使用 Operator 状态。

关于 Operator 状态

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

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

默认情况下,`OperatorCondition` 对象中不存在 `Spec.Conditions` 数组,除非它是由用户添加的,或者是由自定义 Operator 逻辑导致的。

受支持的状态

操作符生命周期管理器 (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 值不会阻止集群升级。