25.5. 升级 Cluster Operator
使用相同的方法升级 Cluster Operator,作为部署的初始方法。
25.5.1. 使用安装文件升级 Cluster Operator 复制链接链接已复制到粘贴板!
这个步骤描述了如何升级 Cluster Operator 部署以使用 Streams for Apache Kafka 2.7。
如果您使用安装 YAML 文件部署 Cluster Operator,请按照以下步骤操作。
由 Cluster Operator 管理的 Kafka 集群的可用性不受升级操作的影响。
有关如何升级到该版本的信息,请参阅支持 Apache Kafka 特定版本的文档。
先决条件
- 提供了现有 Cluster Operator 部署。
- 您已下载了 Apache Kafka 2.7 的 Streams 的发行工件。
流程
-
记录对现有 Cluster Operator 资源所做的任何配置更改(在
/install/cluster-operator目录中)。任何更改都会被 Cluster Operator 的新版本 覆盖。 - 更新您的自定义资源,以反映 Apache Kafka 版本 2.7 的 Streams 支持的配置选项。
更新 Cluster Operator。
根据 Cluster Operator 运行的命名空间,为新的 Cluster Operator 版本修改安装文件。
在 Linux 中,使用:
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml对于 MacOS,使用:
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml-
如果您在现有 Cluster Operator
Deployment中修改了一个或多个环境变量,请编辑install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml文件以使用这些环境变量。
当您有更新的配置时,将其与其余安装资源一起部署:
oc replace -f install/cluster-operator等待滚动更新完成。
如果新 Operator 版本不再支持您要从中升级的 Kafka 版本,Cluster Operator 会返回错误消息,表示不支持该版本。否则,不会返回任何错误消息。
如果返回错误消息,请升级到新 Cluster Operator 版本支持的 Kafka 版本:
-
编辑
Kafka自定义资源。 -
将
spec.kafka.version属性改为支持的 Kafka 版本。
-
编辑
- 如果没有 返回错误消息,请转到下一步。稍后您将升级 Kafka 版本。
获取 Kafka pod 的镜像以确保升级成功:
oc get pods my-cluster-kafka-0 -o jsonpath='{.spec.containers[0].image}'镜像标签显示 Apache Kafka 版本的新 Streams,后跟 Kafka 版本:
registry.redhat.io/amq-streams/strimzi-kafka-37-rhel9:2.7.0您还可以从
Kafka资源的状态检查升级是否已成功完成。
Cluster Operator 升级到 2.7 版本,但它管理的 Kafka 版本不会改变。
25.5.2. 使用 OperatorHub 升级 Cluster Operator 复制链接链接已复制到粘贴板!
如果您从 OperatorHub 部署 Apache Kafka 的 Streams,请使用 Operator Lifecycle Manager (OLM)将 Apache Kafka operator 的 Streams 的更新频道改为 Apache Kafka 版本的新流。
根据您选择的升级策略,更新频道会启动以下类型之一:
- 启动自动升级
- 在安装开始前需要批准的手动升级
如果您订阅了 stable 频道,可以在不更改频道的情况下获得自动更新。但是,不建议启用自动更新,因为缺少任何预安装升级步骤。仅在特定于版本的频道中使用自动升级。
有关使用 OperatorHub 升级 Operator 的更多信息,请参阅 升级已安装的 Operator (OpenShift 文档)。
25.5.3. 迁移到单向主题管理 复制链接链接已复制到粘贴板!
当部署主题 Operator 来管理主题时,Cluster Operator 默认启用单向主题管理。如果您要从使用双向主题管理的 Apache Kafka 版本切换,在升级 Cluster Operator 后需要执行一些清理任务。如需更多信息,请参阅 第 10.9 节 “在主题 Operator 模式间切换”。
25.5.4. 升级 Cluster Operator 返回 Kafka 版本错误 复制链接链接已复制到粘贴板!
如果将 Cluster Operator 升级到不支持您使用的 Kafka 当前版本的版本,则会出现一个 不支持的 Kafka 版本 错误。这个错误适用于所有安装方法,这意味着您必须将 Kafka 升级到支持的 Kafka 版本。将 Kafka 资源中的 spec.kafka.version 更改为支持的版本。
您可以使用 oc 检查错误信息,如包括在 Kafka 资源的 status 中的信息。
检查 Kafka 状态中的错误
oc get kafka <kafka_cluster_name> -n <namespace> -o jsonpath='{.status.conditions}'
将 <kafka_cluster_name> 替换为 Kafka 集群的名称,将 <namespace> 替换为运行 pod 的 OpenShift 命名空间。
25.5.5. 使用 OperatorHub 从 Apache Kafka 1.7 或更早版本的流升级 复制链接链接已复制到粘贴板!
使用 OperatorHub 从 Apache Kafka 1.7 或更早版本的 Streams 升级所需的操作
在将 Apache Kafka Operator 的 Streams 升级到 2.7 版本前,您需要进行以下更改:
-
将自定义资源和 CRD 转换为
v1beta2 -
升级到禁用了
ControlPlaneListener功能门的 Apache Kafka 的 Streams 版本
这些要求在 第 25.2.2 节 “从 1.7 之前的 Apache Kafka 版本升级” 中进行了描述。
如果您要从 Apache Kafka 1.7 或更早版本的 Streams 升级,请执行以下操作:
- 升级到 Apache Kafka 1.7 的流。
- 从 Streams for Apache Kafka 软件下载页面,从 Streams for Apache Kafka 1.8 下载 Red Hat Streams for Apache Kafka API Conversion Tool。
将自定义资源和 CRD 转换为
v1beta2。如需更多信息,请参阅 Apache Kafka 1.7 升级文档的流。
- 在 OperatorHub 中,删除 Apache Kafka Operator Streams 的 Streams 版本 1.7。
如果存在,删除 Apache Kafka Operator 的 Streams 版本 2.7。
如果不存在,请转到下一步。
如果 Apache Kafka Operator 的 Streams 的批准策略被设置为 Automatic,则集群中可能已存在 Operator 版本 2.7。如果您在发行版本 前没有 将自定义资源和 CRD 转换为
v1beta2API 版本,Operator 管理的自定义资源和 CRD 将使用旧的 API 版本。因此,2.7 Operator 处于 Pending 状态。在这种情况下,您需要删除 Apache Kafka Operator 的 Streams 版本 2.7 以及版本 1.7。如果同时删除这两个 Operator,协调将暂停,直到安装了新的 Operator 版本。立即遵循后续步骤,对自定义资源的任何更改都不会延迟。
在 OperatorHub 中,执行以下操作之一:
-
升级到 Apache Kafka Operator 的 Streams 版本 1.8 (默认禁用
ControlPlaneListener功能门)。 -
在禁用了
ControlPlaneListener功能门的情况下,升级到 Apache Kafka Operator 的 Streams 版本 2.0 或 2.2 (其中ControlPlaneListener功能门被默认启用)。
-
升级到 Apache Kafka Operator 的 Streams 版本 1.8 (默认禁用
立即升级到 Apache Kafka Operator 的 Streams 版本 2.7。
安装的 2.7 operator 开始监控集群并执行滚动更新。您可能会注意到在此过程中,集群性能可能会临时降低。