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


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

在执行升级时,您需要将 Kafka 集群保持可用。

您可以使用以下策略之一:

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

    1. 使用 AMQ Streams Drain Cleaner
    2. 通过将注解应用到 pod 手动

在使用其中一种方法推出 pod 前,您必须配置 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 会在升级过程中维护最少数量的非同步副本,以便不会停机。

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 中断预算

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

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
Copy to Clipboard Toggle word wrap

将 & lt;cluster_name > 替换为集群的名称。Kafka 代理 pod 的名称为 & lt;cluster-name&gt; -kafka-<index & gt;,其中 <index> 从零开始,结尾是 replicas减一总数。例如,my-cluster-kafka-0

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat