第23章 Streams for Apache Kafka Drain Cleaner を使用した Pod のエビクト
Kafka および ZooKeeper Pod は、OpenShift のアップグレード、メンテナンス、または Pod の再スケジュール中にエビクトされる可能性があります。Kafka および ZooKeeper Pod を Streams for Apache Kafka によってデプロイした場合、Streams for Apache Kafka Drain Cleaner ツールを使用して Pod のエビクションを処理できます。OpenShift の代わりに、Streams for Apache Kafka Drain Cleaner がエビクションを処理します。
Streams for Apache Kafka Drain Cleaner をデプロイすると、OpenShift の代わりに Cluster Operator を使用して Kafka Pod を移動できるようになります。Cluster Operator は、トピックの複製の数が最低数未満とならないようにし、エビクションプロセス中も Kafka が稼働状態を維持できるようにします。Cluster Operator は、OpenShift ワーカーノードが連続してドレイン (解放) されるため、トピックが同期するのを待ちます。
アドミッション Webhook が、Kubernetes API への Pod エビクション要求を Streams for Apache Kafka Drain Cleaner に通知します。次に、Streams for Apache Kafka Drain Cleaner が、ドレインする Pod にローリング更新アノテーションを追加します。このアノテーションにより、ローリング更新を実行する指示が Cluster Operator に通知されます。
Streams for Apache Kafka Drain Cleaner を使用していない場合は、Pod アノテーションを追加して、ローリング更新を手動で実行 できます。
Webhook の設定
Streams for Apache Kafka Drain Cleaner のデプロイメントファイルには、ValidatingWebhookConfiguration
リソースファイルが含まれています。リソースでは、Kubernetes API で Webhook を登録する設定が可能です。
この設定は、Pod のエビクション要求の場合に使用する Kubernetes API の ルール
を定義します。ルールは、pods/eviction
サブリソースに関連する CREATE
操作だけがインターセプトされることを指定します。これらのルールが満たされている場合、API は通知を転送します。
clientConfig
は、Streams for Apache Kafka Drain Cleaner サービスと、Webhook を公開する /drainer
エンドポイントを参照します。Webhook は、認証を必要とする、セキュアな TLS 接続を使用します。caBundle
プロパティーは、HTTPS 通信を検証する証明書チェーンを指定します。証明書は Base64 でエンコードされます。
Pod エビクション通知の Webhook 設定
apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration # ... webhooks: - name: strimzi-drain-cleaner.strimzi.io rules: - apiGroups: [""] apiVersions: ["v1"] operations: ["CREATE"] resources: ["pods/eviction"] scope: "Namespaced" clientConfig: service: namespace: "strimzi-drain-cleaner" name: "strimzi-drain-cleaner" path: /drainer port: 443 caBundle: Cg== # ...
23.1. Streams for Apache Kafka Drain Cleaner のデプロイメントファイルのダウンロード
Streams for Apache Kafka Drain Cleaner をデプロイして使用するには、デプロイメントファイルをダウンロードする必要があります。
Streams for Apache Kafka Drain Cleaner のデプロイメントファイルは、Streams for Apache Kafka ソフトウェアダウンロードページ から入手できます。