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 主题
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" # ...
流程
如果您将
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 添加相同的配置。
更新
Kafka
资源:oc apply -f <kafka_configuration_file>
部署 Apache Kafka Drain Cleaner 的流。
要在 OpenShift 上运行 Drain Cleaner,请应用
/install/drain-cleaner/openshift
目录中的资源。oc apply -f ./install/drain-cleaner/openshift