搜索

23.2. 使用安装文件为 Apache Kafka Drain Cleaner 部署流

download PDF

将 Apache Kafka Drain Cleaner 的 Streams 部署到运行 Cluster Operator 和 Kafka 集群的 OpenShift 集群。

Apache Kafka Drain Cleaner 的流可在两种不同的模式下运行。默认情况下,Drain Cleaner 拒绝(块)OpenShift 驱除请求,以防止 OpenShift 驱除 pod,而是使用 Cluster Operator 来移动 pod。这个模式可以更好地与各种集群自动扩展工具兼容,不需要任何特定的 PodDisuptionBudget 配置。另外,您可以启用旧模式,它允许驱除请求,同时指示 Cluster Operator 移动 pod。要使传统模式正常工作,您必须将 PodDisruptionBudget 配置为不允许将 maxUnavailable 选项设置为 0 的任何 pod 驱除。

先决条件

  • 您已下载了 Apache Kafka Drain Cleaner 部署文件的流
  • 您有一个高度可用的 Kafka 集群部署,它运行了您要更新的 OpenShift worker 节点。
  • 为高可用性复制主题。

    主题配置指定至少 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
        # ...

排除 Kafka 或 ZooKeeper

如果您不想在 Drain Cleaner 操作中包含 Kafka 或 ZooKeeper pod,或者您希望在旧模式中使用 Drain Cleaner,请在 Drain Cleaner Deployment 配置文件中更改默认环境变量:

  • STRIMZI_DENY_EVICTION 设置为 false 以使用依赖 PodDisruptionBudget 配置的传统模式
  • STRIMZI_DRAIN_KAFKA 设置为 false 以排除 Kafka pod
  • STRIMZI_DRAIN_ZOOKEEPER 设置为 false 以排除 ZooKeeper pod

排除 ZooKeeper pod 的配置示例

apiVersion: apps/v1
kind: Deployment
spec:
  # ...
  template:
    spec:
      serviceAccountName: strimzi-drain-cleaner
      containers:
        - name: strimzi-drain-cleaner
          # ...
          env:
            - name: STRIMZI_DENY_EVICTION
              value: "true"
            - name: STRIMZI_DRAIN_KAFKA
              value: "true"
            - name: STRIMZI_DRAIN_ZOOKEEPER
              value: "false"
          # ...

流程

  1. 如果您将 STRIMZI_DENY_EVICTION 环境变量设置为 false 来激活旧模式,还必须配置 PodDisruptionBudget 资源。使用 template 设置,在 Kafka 资源的 Kafka 和 ZooKeeper 部分中将maxUnavailable 设置为 0 (零)。

    指定 pod 中断预算

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      namespace: myproject
    spec:
      kafka:
        template:
          podDisruptionBudget:
            maxUnavailable: 0
    
      # ...
      zookeeper:
        template:
          podDisruptionBudget:
            maxUnavailable: 0
      # ...

    此设置可防止在计划中断时自动驱除 pod,保留 Apache Kafka Drain Cleaner 和 Cluster Operator 的 Streams,以便在不同的 worker 节点上推出 pod。

    如果要使用 Streams for Apache Kafka Drain Cleaner 排空 ZooKeeper 节点,为 ZooKeeper 添加相同的配置。

  2. 更新 Kafka 资源:

    oc apply -f <kafka_configuration_file>
  3. 部署 Apache Kafka Drain Cleaner 的流。

    • 要在 OpenShift 上运行 Drain Cleaner,请应用 /install/drain-cleaner/openshift 目录中的资源。

      oc apply -f ./install/drain-cleaner/openshift
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.