23.3. 最小限のダウンタイムでの OpenShift のアップグレード


OpenShift をアップグレードする場合は、OpenShift アップグレードのドキュメントを参照して、アップグレードパスとノードを正しくアップグレードする手順を確認してください。OpenShift をアップグレードする前に、お使いの AMQ Streams バージョンでサポートされるバージョン を確認してください。

アップグレードを実行する際に、Kafka クラスターを利用できるようにしておくことを推奨します。

以下のストラテジーのいずれかを使用できます。

  1. Pod の Disruption Budget を設定します。
  2. 以下の方法の 1 つで Pod をローリングします。

    1. AMQ Streams Drain Cleaner の使用
    2. Pod へのアノテーションの手動適用

いずれかの方法を使用して Pod をロールする場合は、maxUnavailable プロパティーを使用して Pod 中断バジェットをゼロに設定する必要があります。

注記

StrimziPodSet カスタムリソースは、maxUnavailable 値を直接使用できないカスタムコントローラーを使用して Kafka および ZooKeeper Pod を管理します。代わりに、maxUnavailable 値は minAvailable 値に変換されます。ブローカー Pod が 3 つあり、maxUnavailable プロパティーが 0 (ゼロ) に設定されている場合、minAvailable 設定は 3 で、3 つのブローカー Pod すべてが使用可能である必要があり、使用できない Pod が存在しないことが許可されます。

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
    # ...
Copy to Clipboard Toggle word wrap

高可用性環境では、Cluster Operator はアップグレードプロセス時にトピックの In-Sync レプリカの最小数を維持し、ダウンタイムが発生しないようにします。

23.3.1. AMQ Streams Drain Cleaner を使用した Pod のローリング

AMQ Streams Drain Cleaner を使用して、アップグレード時にノードをエビクトできます。AMQ Streams Drain Cleaner は、Pod のローリング更新アノテーションを Pod に付けます。これにより、Cluster Operator に、エビクトされた Pod のローリング更新を実行するように指示します。

Pod の Disruption Budget を使用すると、特定の時点で、指定された数の Pod だけが、利用できなくなります。Kafka ブローカー Pod の計画メンテナンス時に、Pod の Disruption Budget を使用して、Kafka が高可用性環境で引き続き実行されるようにします。

Kafka コンポーネントの template のカスタマイズを使用して、Pod の Disruption Budget を指定します。デフォルトでは、Pod の Disruption Budget は、単一の Pod のみを指定時に利用できないようにします。

Drain Cleaner を使用して Pod をロールには、maxUnavailable0 (ゼロ) に設定します。Pod 中断バジェットをゼロに減らすと自発的な中断が防止されるため、Pod を手動で削除する必要があります。

Pod の Disruption Budget の指定

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
  namespace: myproject
spec:
  kafka:
    # ...
    template:
      podDisruptionBudget:
        maxUnavailable: 0
# ...
Copy to Clipboard Toggle word wrap

23.3.2. トピックを利用可能な状態に維持しながらの手動での Pod のローリング

アップグレード時に、Cluster Operator 経由で Pod の手動ローリング更新をトリガーできます。Pod リソースを使用して、ローリング更新は新規 Pod でリソースの Pod を再起動します。AMQ Streams Drain Cleaner を使用する場合と同様に、Pod の Disruption Budget の maxUnavailable の値をゼロに設定する必要があります。

ドレイン (解放) する必要のある Pod を監視する必要があります。次に Pod アノテーションを追加して更新を行います。

ここで、アノテーションは Kafka ブローカーを更新します。

Kafka ブローカー Pod での手動ローリング更新の実行

oc annotate pod <cluster_name>-kafka-<index> strimzi.io/manual-rolling-update=true
Copy to Clipboard Toggle word wrap

<cluster_name> は、クラスターの名前に置き換えます。Kafka ブローカー Pod の名前は <cluster-name>-kafka-<index> です。ここで、<index> はゼロで始まり、レプリカの合計数から 1 を引いた数で終了します。例: my-cluster-kafka-0

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat