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_EVICTIONfalse に設定します。
  • KafkaPod を除外するには、STRIMZI_DRAIN_KAFKAfalse に設定します。
  • ZooKeeper Pod を除外するには、STRIMZI_DRAIN_ZOOKEEPERfalse に設定します。

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"
          # ...

手順

  1. STRIMZI_DENY_EVICTION 環境変数を false に設定して、レガシーモードをアクティベートしている場合は、PodDisruptionBudget リソースも設定する必要があります。template 設定を使用して、Kafka リソースの Kafka セクションと ZooKeeper セクションで maxUnavailable0 (ゼロ) に設定します。

    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 に同じ設定を追加します。

  2. Kafka リソースを更新します。

    oc apply -f <kafka_configuration_file>
  3. Streams for Apache Kafka Drain Cleaner をデプロイします。

    • OpenShift で Drain Cleaner を実行するには、/install/drain-cleaner/openshift ディレクトリーにあるリソースを適用します。

      oc apply -f ./install/drain-cleaner/openshift
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.