29.4. 在短短停机时间的情况下升级 OpenShift


如果要升级 OpenShift,请参阅 OpenShift 升级文档,以检查升级路径以及正确升级节点的步骤。在升级 OpenShift 前 ,请检查您的 Apache Kafka 版本的 Streams 版本

在执行升级时,按照以下步骤确保 Kafka 集群的可用性:

  1. 配置 pod 中断预算
  2. 使用以下方法之一滚动 pod:

    1. 使用 Apache Kafka Drain Cleaner 的 Streams (推荐)
    2. 将注解应用到 pod 以手动滚动

要使 Kafka 保持正常运行,还必须复制主题以实现高可用性。这要求主题配置指定至少 3 个复制因素,最小同步副本的数量为复制因素的数量减 1。

为高可用性复制 Kafka 主题

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaTopic
metadata:
  name: my-topic
  labels:
    strimzi.io/cluster: my-cluster
spec:
  partitions: 1
  replicas: 3
  config:
    # ...
    min.insync.replicas: 2
    # ...
Copy to Clipboard Toggle word wrap

在高可用性环境中,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 中断预算

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
  namespace: myproject
spec:
  kafka:
    # ...
    template:
      podDisruptionBudget:
        maxUnavailable: 0
# ...
Copy to Clipboard Toggle word wrap

您需要监视需要排空的 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"
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat