×

本指南概述了 Operator Lifecycle Manager (OLM) 如何使用 Operator 条件。

关于 Operator 条件

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

OLM 提供了一个名为OperatorCondition的自定义资源定义 (CRD),允许 Operator 将条件传达给 OLM。当OperatorCondition资源的Spec.Conditions数组中存在一组支持的条件时,这些条件会影响 OLM 对 Operator 的管理。

默认情况下,除非由用户添加或作为自定义 Operator 逻辑的结果,否则OperatorCondition对象中不会出现Spec.Conditions数组。

支持的条件

Operator Lifecycle Manager (OLM) 支持以下 Operator 条件。

可升级条件

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

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

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

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

Upgradeable Operator 条件示例
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值表示 Operator 尚未准备好升级。OLM 阻止替换 Operator 的现有 CSV 的 CSV 离开Pending阶段。False值不会阻止集群升级。