23.2. インストールファイルを使用した Streams for Apache Kafka Drain Cleaner のデプロイ
Cluster Operator と Kafka クラスターが実行されている OpenShift クラスターに、Streams for Apache Kafka Drain Cleaner をデプロイします。
Streams for Apache Kafka Drain Cleaner は、2 つの異なるモードで実行できます。デフォルトでは、Drain Cleaner は OpenShift のエビクション要求を拒否 (ブロック) して、OpenShift が Pod をエビクションするのを防ぎ、代わりに Cluster Operator を使用して Pod を移動します。このモードは、さまざまなクラスター自動スケーリングツールとの互換性が高く、特定の PodDisuptionBudget
設定を必要としません。あるいは、レガシーモードを有効にして、Cluster Operator に Pod の移動を指示しながら、エビクション要求を許可することもできます。レガシーモードを機能させるには、maxUnavailable
オプションを 0
に設定して、Pod の削除を許可しないように PodDisruptionBudget
を設定する必要があります。
前提条件
- Streams for Apache Kafka Drain Cleaner のデプロイメントファイルをダウンロード した。
- 更新する OpenShift ワーカーノードで実行している高可用性 Kafka クラスターデプロイメントがある。
トピックを複製して高可用性に対応する
少なくとも 3 つのレプリケーション係数と、レプリケーション係数よりも 1 つ少ない In-Sync レプリカの最小数を指定するトピック設定。
高可用性のためにレプリケートされた 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
設定ファイルでデフォルトの環境変数を変更します。
-
PodDisruptionBudget
設定に依存するレガシーモードを使用するには、STRIMZI_DENY_EVICTION
をfalse
に設定します。 -
KafkaPod を除外するには、
STRIMZI_DRAIN_KAFKA
をfalse
に設定します。 -
ZooKeeper Pod を除外するには、
STRIMZI_DRAIN_ZOOKEEPER
をfalse
に設定します。
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 の Disruption Budget の指定
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 の自動エビクションが防止され、Streams for Apache Kafka Drain Cleaner および Cluster Operator が Pod を別のワーカーノードにロールできるようになります。
Streams for Apache Kafka Drain Cleaner を使用して ZooKeeper ノードをドレインする場合は、ZooKeeper に同じ設定を追加します。
Kafka
リソースを更新します。oc apply -f <kafka_configuration_file>
Streams for Apache Kafka Drain Cleaner をデプロイします。
OpenShift で Drain Cleaner を実行するには、
/install/drain-cleaner/openshift
ディレクトリーにあるリソースを適用します。oc apply -f ./install/drain-cleaner/openshift