12.3. AMQ Streams Drain Cleaner での Pod の退避
Kafka および ZooKeeper Pod は、OpenShift のアップグレード、メンテナンス、または Pod の再スケジュール時にエビクトされる可能性があります。Kafka ブローカーおよび ZooKeeper Pod が AMQ Streams によってデプロイされた場合に、AMQ Streams Drain Cleaner ツールを使用して Pod のエビクションを処理できます。AMQ Streams Drain Cleaner が機能するには、Kafka デプロイメントの podDisruptionBudget を 0 (ゼロ)に設定する必要があります。
AMQ Streams Drain Cleaner をデプロイすることで、Cluster Operator を使用して OpenShift ではなく Kafka Pod を移動できます。Cluster Operator は、トピックの複製の数が最低数未満にならないようにします。Kafka はエビクションプロセス時に稼働を継続できます。Cluster Operator は、OpenShift ワーカーノードが連続してドレイン(解放)されるため、トピックが同期するのを待ちます。
受付 Webhook は、AMQ Streams Drain Cleaner に Kubernetes API への Pod エビクション要求を通知します。AMQ Streams Drain Cleaner は次に、ドレイン(解放)する Pod にローリング更新アノテーションを追加します。これにより、Cluster Operator に、エビクトされた Pod のローリングアップデートを実行するように指示します。
AMQ Streams Drain Cleaner を使用していない場合は、Pod アノテーションを追加して手動でローリングアップデートを実行 できます。
Webhook の設定
AMQ Streams Drain Cleaner デプロイメントファイルには、ValidatingWebhookConfiguration リソースファイルが含まれます。リソースでは、Kubernetes API で Webhook を登録する設定が可能です。
この設定は、Pod のエビクション要求の場合に使用する Kubernetes API の ルール を定義します。ルールは、pods/eviction サブリソースに関連する CREATE 操作だけがインターセプトされることを指定します。これらのルールが満たされている場合、API は通知を転送します。
clientConfig は、Webhook を公開する AMQ Streams Drain Cleaner サービスおよび /drainer エンドポイントを参照します。Webhook は、認証を必要とする、セキュアな TLS 接続を使用します。caBundle プロパティーは、HTTPS 通信を検証する証明書チェーンを指定します。証明書は Base64 でエンコードされます。
Pod エビクション通知の Webhook 設定
12.3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Streams Drain Cleaner をデプロイおよび使用するには、デプロイメントファイルをダウンロードする必要があります。
AMQ Streams Drain Cleaner デプロイメントファイルは、AMQ Streams ソフトウェアダウンロードページ からダウンロード可能なインストールファイルとサンプルファイルとして提供されます。