10.3. 在短短停机时间的情况下升级 OpenShift
如果要升级 OpenShift,请参阅 OpenShift 升级文档,以检查升级路径和正确升级节点的步骤。在升级 OpenShift 前 ,请检查您的 AMQ Streams 版本的支持版本。
在执行升级时,您需要将 Kafka 集群保持可用。
您可以使用以下策略之一:
- 配置 pod 中断预算
使用以下方法之一滚动 pod:
- 使用 AMQ Streams Drain Cleaner
- 通过将注解应用到 pod 手动
在使用其中一种方法推出 pod 前,您必须配置 pod 中断预算。
要使 Kafka 保持正常运行,还必须复制主题以实现高可用性。这要求主题配置指定至少 3 个复制因素,最小同步副本的数量为复制因素的数量减 1。
Kafka 主题复制以实现高可用性
在高可用性环境中,Cluster Operator 会在升级过程中维护最少数量的非同步副本,以便不会停机。
10.3.1. 使用 AMQ Streams Drain Cleaner 滚动 pod 复制链接链接已复制到粘贴板!
您可以使用 AMQ Streams Drain Cleaner 工具在升级过程中驱除节点。AMQ Streams Drain Cleaner 使用滚动更新 pod 注解注解 pod。这会通知 Cluster Operator 执行被驱除的 pod 的滚动更新。
pod 中断预算只允许指定数量的 pod 在给定时间不可用。在计划维护 Kafka 代理 pod 的过程中,pod 中断预算可确保 Kafka 在高可用性的环境中继续运行。
您可以使用对 Kafka 组件的 模板
自定义来指定 pod 中断预算。默认情况下,pod 中断预算只允许一个 pod 在给定时间不可用。
要做到这一点,您要将 maxUnavailable
设置为 0 (
零)。减少最大 pod 中断预算为零可防止自愿中断,因此必须手动驱除 pod。
指定 pod 中断预算
10.3.2. 手动滚动 pod,同时保持主题可用 复制链接链接已复制到粘贴板!
在升级过程中,您可以通过 Cluster Operator 手动滚动更新 pod。使用 Pod
资源,滚动使用新 pod 来更新资源 pod。与使用 AMQ Streams Drain Cleaner 一样,对于 pod 中断预算,您需要将 maxUnavailable
值设置为零。
您需要监视需要排空的 pod。然后,添加一个 pod 注解来进行更新。
此处,注解会更新 Kafka 代理。
对 Kafka 代理 pod 执行手动滚动更新
oc annotate pod <cluster_name>-kafka-<index> strimzi.io/manual-rolling-update=true
oc annotate pod <cluster_name>-kafka-<index> strimzi.io/manual-rolling-update=true
将 & lt;cluster_name > 替换为集群的名称。Kafka 代理 pod 的名称为 & lt;cluster-name> -kafka-<index & gt;,其中 <index> 从零开始,结尾是 replicas减一总数。例如,my-cluster-kafka-0
。