23.3. 使用 Apache Kafka Drain Cleaner 的 Streams
将 Apache Kafka Drain Cleaner 的 Streams 与 Cluster Operator 搭配使用,将 Kafka 代理或 ZooKeeper pod 从正在排空的节点中移出。当您运行 Apache Kafka Drain Cleaner 的 Streams 时,它会使用滚动更新 pod 注解来注解 pod。Cluster Operator 根据注解执行滚动更新。
使用反关联性配置时的注意事项
在 Kafka 或 ZooKeeper pod 中使用 反关联性 时,请考虑在集群中添加备用 worker 节点。包含备用节点可确保集群在节点排空或其他节点临时不可用期间重新调度 pod。当 worker 节点排空并反关联性规则限制备用节点上的 pod 重新调度时,备用节点有助于防止重启 pod 变得不可调度。这可减少排空操作失败的问题。
流程
排空托管 Kafka 代理或 ZooKeeper pod 的指定 OpenShift 节点。
oc get nodes oc drain <name-of-node> --delete-emptydir-data --ignore-daemonsets --timeout=6000s --force检查流中的 Apache Kafka Drain Cleaner 日志中的驱除事件,以验证 pod 是否已注解用于重启。
Apache Kafka Drain Cleaner 日志的流显示 pod 的注解
INFO ... Received eviction webhook for Pod my-cluster-zookeeper-2 in namespace my-project INFO ... Pod my-cluster-zookeeper-2 in namespace my-project will be annotated for restart INFO ... Pod my-cluster-zookeeper-2 in namespace my-project found and annotated for restart INFO ... Received eviction webhook for Pod my-cluster-kafka-0 in namespace my-project INFO ... Pod my-cluster-kafka-0 in namespace my-project will be annotated for restart INFO ... Pod my-cluster-kafka-0 in namespace my-project found and annotated for restart检查 Cluster Operator 日志中的协调事件,以验证滚动更新。
Cluster Operator 日志显示滚动更新
INFO PodOperator:68 - Reconciliation #13(timer) Kafka(my-project/my-cluster): Rolling Pod my-cluster-zookeeper-2 INFO PodOperator:68 - Reconciliation #13(timer) Kafka(my-project/my-cluster): Rolling Pod my-cluster-kafka-0 INFO AbstractOperator:500 - Reconciliation #13(timer) Kafka(my-project/my-cluster): reconciled