23.3. Streams for Apache Kafka Drain Cleaner の使用
Streams for Apache Kafka Drain Cleaner を Cluster Operator と組み合わせて使用し、ドレイン対象のノードから Kafka ブローカーまたは ZooKeeper Pod を移動します。Streams for Apache Kafka Drain Cleaner を実行すると、ローリング更新 Pod アノテーションが Pod に付けられます。Cluster Operator はアノテーションに基づいてローリング更新を実行します。
アンチアフィニティー設定を使用する場合の考慮事項
Kafka または ZooKeeper Pod で アンチアフィニティー を使用する場合は、クラスターに予備のワーカーノードを追加することを検討してください。スペアノードを含めることで、ノードのドレイン中や他のノードが一時的に利用できなくなったときにクラスターに Pod を再スケジュールできる容量が確保されます。ワーカーノードがドレインされ、反アフィニティールールによって代替ノードでの Pod の再スケジュールが制限されている場合、スペアノードは、再起動した Pod がスケジュール不能になるのを防ぐのに役立ちます。これにより、ドレイン操作が失敗するリスクが軽減されます。
手順
Kafka ブローカーまたは ZooKeeper Pod をホストする、特定の OpenShift ノードをドレイン (解放) します。
oc get nodes oc drain <name-of-node> --delete-emptydir-data --ignore-daemonsets --timeout=6000s --force
Streams for Apache Kafka Drain Cleaner のログのエビクションイベントをチェックして、Pod に再起動のアノテーションが付けられていることを確認します。
Pod のアノテーションを示す Streams for Apache Kafka Drain Cleaner のログ
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 log shows rolling updates (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