29.4. 在短短停机时间的情况下升级 OpenShift
如果要升级 OpenShift,请参阅 OpenShift 升级文档,以检查升级路径以及正确升级节点的步骤。在升级 OpenShift 前 ,请检查您的 Apache Kafka 版本的 Streams 版本。
在执行升级时,按照以下步骤确保 Kafka 集群的可用性:
- 配置 pod 中断预算
使用以下方法之一滚动 pod:
- 使用 Apache Kafka Drain Cleaner 的 Streams (推荐)
- 将注解应用到 pod 以手动滚动
要使 Kafka 保持正常运行,还必须复制主题以实现高可用性。这要求主题配置指定至少 3 个复制因素,最小同步副本的数量为复制因素的数量减 1。
为高可用性复制 Kafka 主题
在高可用性环境中,Cluster Operator 在升级过程中为主题维护最少的同步副本,以便不会停机。
29.4.1. 使用 Drain Cleaner 的滚动 pod 复制链接链接已复制到粘贴板!
当使用 Apache Kafka Drain Cleaner 的 Streams 在 OpenShift 升级过程中驱除节点时,它会使用手动滚动更新注解来注解 pod,以告知 Cluster Operator 执行应该被驱除的 pod,并从要升级的 OpenShift 节点移出。
如需更多信息,请参阅 第 25 章 使用 Apache Kafka Drain Cleaner 的 Streams 驱除 pod。
29.4.2. 手动滚动 pod (原生 Drain Cleaner) 复制链接链接已复制到粘贴板!
作为使用 Drain Cleaner 滚动 pod 的替代选择,您可以通过 Cluster Operator 触发 pod 的手动滚动更新。使用 Pod
资源时,滚动更新会使用新 pod 重启资源的 pod。要通过保留主题来复制 Drain Cleaner 的操作,对于 pod 中断预算,还必须将 maxUnavailable
值设置为 0。将 pod 中断预算减少为零可防止 OpenShift 自动驱除 pod。
指定 pod 中断预算
您需要监视需要排空的 pod。然后,您可以添加 pod 注解以进行更新。
在这里,注解会更新名为 my-cluster-pool-a-1
的 Kafka pod。
在 Kafka pod 上执行手动滚动更新
oc annotate pod my-cluster-pool-a-1 strimzi.io/manual-rolling-update="true"
oc annotate pod my-cluster-pool-a-1 strimzi.io/manual-rolling-update="true"