第27章 AMQ Streams の管理
AMQ Streams を管理するには、Kafka クラスターと関連リソースのスムーズな実行を維持するためにさまざまなタスクを実行する必要があります。oc コマンドを使用してリソースのステータスを確認し、ローリング 更新のメンテナンス期間を設定し、AMQ Streams Drain Cleaner や Kafka Static Quota プラグインなどのツールを活用してデプロイメントを効果的に管理します。
27.1. カスタムリソースの使用 リンクのコピーリンクがクリップボードにコピーされました!
oc コマンドを使用して、AMQ Streams カスタムリソースで情報を取得し、他の操作を実行できます。
カスタムリソースの status サブリソースで oc を使用すると、リソースに関する情報を取得できます。
27.1.1. カスタムリソースでの oc 操作の実施 リンクのコピーリンクがクリップボードにコピーされました!
リソースタイプに対して操作を行うには、get、describe、edit、delete などの oc コマンドを使用します。たとえば、oc get kafkatopics はすべての Kafka トピックのリストを取得し、oc get kafkas はデプロイされたすべての Kafka クラスターを取得します。
リソースタイプを参照する際には、単数形と複数形の両方の名前を使うことができます。oc get kafkas は oc get kafka と同じ結果になります。
リソースの 短縮名 を使用することもできます。短縮名を理解すると、AMQ Streams を管理する時間を節約できます。Kafka のショートネームは k なので、oc get k を実行してすべての Kafka クラスターをリストアップすることもできます。
oc get k NAME DESIRED KAFKA REPLICAS DESIRED ZK REPLICAS my-cluster 3 3
oc get k
NAME DESIRED KAFKA REPLICAS DESIRED ZK REPLICAS
my-cluster 3 3
| AMQ Streams リソース | 正式名 | 短縮名 |
|---|---|---|
| Kafka | kafka | k |
| Kafka Node Pool | kafkanodepool | knp |
| Kafka Topic | kafkatopic | kt |
| Kafka User | kafkauser | ku |
| Kafka Connect | kafkaconnect | kc |
| Kafka Connector | kafkaconnector | kctr |
| Kafka Mirror Maker | kafkamirrormaker | kmm |
| Kafka Mirror Maker 2 | kafkamirrormaker2 | kmm2 |
| Kafka Bridge | kafkabridge | kb |
| Kafka Rebalance | kafkarebalance | kr |
27.1.1.1. リソースカテゴリー リンクのコピーリンクがクリップボードにコピーされました!
カスタムリソースのカテゴリーは、oc コマンドでも使用できます。
すべての AMQ Streams カスタムリソースはカテゴリー strimzi に属するため、strimzi を使用してすべての AMQ Streams リソースを 1 つのコマンドで取得できます。
例えば、oc get strimzi を実行すると、指定された名前空間のすべての AMQ Streams カスタムリソースがリスト表示されます。
oc get strimzi -o name コマンドは、すべてのリソースタイプとリソース名を返します。-o name オプションは type/name 形式で出力を取得します。
oc get strimzi -o name kafka.kafka.strimzi.io/my-cluster kafkatopic.kafka.strimzi.io/kafka-apps kafkauser.kafka.strimzi.io/my-user
oc get strimzi -o name
kafka.kafka.strimzi.io/my-cluster
kafkatopic.kafka.strimzi.io/kafka-apps
kafkauser.kafka.strimzi.io/my-user
この strimzi コマンドを他のコマンドと組み合わせることができます。たとえば、これを oc delete コマンドに渡して、単一のコマンドですべてのリソースを削除できます。
oc delete $(oc get strimzi -o name) kafka.kafka.strimzi.io "my-cluster" deleted kafkatopic.kafka.strimzi.io "kafka-apps" deleted kafkauser.kafka.strimzi.io "my-user" deleted
oc delete $(oc get strimzi -o name)
kafka.kafka.strimzi.io "my-cluster" deleted
kafkatopic.kafka.strimzi.io "kafka-apps" deleted
kafkauser.kafka.strimzi.io "my-user" deleted
1 つの操作ですべてのリソースを削除することは、AMQ Streams の新機能をテストする場合などに役立ちます。
27.1.1.2. サブリソースのステータスのクエリー リンクのコピーリンクがクリップボードにコピーされました!
-o オプションに渡すことのできる他の値もあります。たとえば、-o yaml を使用すると、YAML 形式で出力されます。-o json を使用すると JSON として返されます。
oc get --help のすべてのオプションが表示されます。
最も便利なオプションの 1 つは JSONPath サポート で、JSONPath 式を渡して Kubernetes API にクエリーを実行できます。JSONPath 式は、リソースの特定部分を抽出または操作できます。
たとえば、JSONPath 式 {.status.listeners[?(@.name=="tls")].bootstrapServers} を使用して、Kafka カスタムリソースのステータスからブートストラップアドレスを取得し、Kafka クライアントで使用できます。
この場合、コマンドは tls という名前のリスナーの bootstrapServers 値を検索します。
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="tls")].bootstrapServers}{"\n"}'
my-cluster-kafka-bootstrap.myproject.svc:9093
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="tls")].bootstrapServers}{"\n"}'
my-cluster-kafka-bootstrap.myproject.svc:9093
名前の条件を変更することで、他の Kafka リスナーのアドレスも取得できます。
jsonpath を使用して、カスタムリソースから他のプロパティーまたはプロパティーのグループを抽出できます。
27.1.2. AMQ Streams カスタムリソースのステータス情報 リンクのコピーリンクがクリップボードにコピーされました!
ステータスプロパティーは、特定のカスタムリソースのステータス情報を提供します。
次の表に、ステータス情報 (デプロイ時) を提供するカスタムリソースと、ステータスプロパティーを定義するスキーマを示します。
スキーマの詳細は、AMQ Streams カスタムリソースの API リファレンス を参照してください。
| AMQ Streams リソース | スキーマ参照 | ステータス情報がパブリッシュされる場所 |
|---|---|---|
|
|
| Kafka クラスター |
|
|
| Kafka クラスター内の Kafka トピック |
|
|
| Kafka クラスター内の Kafka ユーザー |
|
|
| Kafka Connect クラスター |
|
|
|
|
|
|
| Kafka MirrorMaker 2 クラスター |
|
|
| Kafka MirrorMaker クラスター |
|
|
| AMQ Streams Kafka Bridge |
|
|
| リバランスの状況と結果 |
リソースの status プロパティーは、リソースの状態に関する情報を提供します。status.conditions および status.observedGeneration プロパティーは、すべてのリソースに共通です。
status.conditions-
ステータス条件は、リソースの 現在の状態 を表します。ステータス条件プロパティーは、
仕様で指定された設定で定義されているように、リソースが 目的の状態 に到達することに関連する進行状況を追跡するのに役立ちます。状況条件プロパティーは、リソースの状態が変更された時間と理由、およびオペレーターが目的の状態を実現するのを妨げたり遅らせたりするイベントの詳細を提供します。 status.observedGeneration-
最後に観察された世代は、Cluster Operator によるリソースの最新の調整を示します。
observedGenerationの値がmetadata.generation(デプロイメントの現在のバージョン)(の値と異なる場合、リソースの最新の更新が Operator によって処理されていません。これらの値が同じである場合、リソースの最新の変更がステータス情報に反映されます。
status プロパティーは、リソース固有の情報も提供します。たとえば、KafkaStatus はリスナーアドレスに関する情報と Kafka クラスターの ID を提供します。
KafkaStatus は、使用されている Kafka および AMQ Streams のバージョンに関する情報も提供します。OperatorLastSuccessfulVersion と kafkaVersion の値をチェックして、AMQ Streams または Kafka のアップグレードが完了したかどうかを判断できます。
AMQ Streams によってカスタムリソースのステータスが作成および維持されます。定期的にカスタムリソースの現在の状態が評価され、その結果に応じてステータスが更新されます。くださいーたとえば、oc edit を使用してカスタムリソースで更新を行う場合、その status は編集不可能です。さらに、status の変更は Kafka クラスターステータスの設定に影響しません。
ここでは、Kafka カスタムリソースの status プロパティーを確認します。
Kafka カスタムリソースのステータス
- 1
- Kafka クラスター ID。
- 2
- ステータス
conditionsは、Kafka クラスターの現在の状態を表します。 - 3
Ready状態は、Cluster Operator が Kafka クラスターがトラフィックを処理できると見なしていることを示します。- 4
- Kafka クラスターによって使用されている Kafka のバージョン。
- 5
listenersは、Kafka ブートストラップアドレスをタイプ別に記述します。- 6
observedGeneration値は、Cluster Operator によるKafkaカスタムリソースの最後の調整を示します。- 7
- 最後の調整を正常に完了した Operator のバージョン。
Kafka ブートストラップアドレスがステータスに一覧表示されても、それらのエンドポイントまたは Kafka クラスターが Ready 状態であるとは限りません。
ステータス情報のアクセス
リソースのステータス情報はコマンドラインから取得できます。詳細は、「カスタムリソースのステータスの検出」 を参照してください。
27.1.3. カスタムリソースのステータスの検出 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、カスタムリソースのステータスを検出する方法を説明します。
前提条件
- OpenShift クラスター
- Cluster Operator が稼働中である。
手順
カスタムリソースを指定し、
-o jsonpathオプションを使用して標準の JSONPath 式を適用してstatusプロパティーを選択します。oc get kafka <kafka_resource_name> -o jsonpath='{.status}'oc get kafka <kafka_resource_name> -o jsonpath='{.status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow この式は、指定されたカスタムリソースのすべてのステータス情報を返します。
status.listenersまたはstatus.observedGenerationなどのドット表記を使用すると、表示するステータス情報を微調整できます。