23.2. 使用安装文件为 Apache Kafka Drain Cleaner 部署流
将 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 主题
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
排除 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 的配置示例
流程
如果您将
STRIMZI_DENY_EVICTION环境变量设置为false来激活旧模式,还必须配置PodDisruptionBudget资源。使用template设置,在Kafka资源的 Kafka 和 ZooKeeper 部分中将maxUnavailable设置为0(零)。指定 pod 中断预算
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此设置可防止在计划中断时自动驱除 pod,保留 Apache Kafka Drain Cleaner 和 Cluster Operator 的 Streams,以便在不同的 worker 节点上推出 pod。
如果要使用 Streams for Apache Kafka Drain Cleaner 排空 ZooKeeper 节点,为 ZooKeeper 添加相同的配置。
更新
Kafka资源:oc apply -f <kafka_configuration_file>
oc apply -f <kafka_configuration_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 Apache Kafka Drain Cleaner 的流。
要在 OpenShift 上运行 Drain Cleaner,请应用
/install/drain-cleaner/openshift目录中的资源。oc apply -f ./install/drain-cleaner/openshift
oc apply -f ./install/drain-cleaner/openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow