10.2. 高可用性
高可用性 (HA) は Kubernetes API の標準的な機能で、中断が生じる場合に API が稼働を継続するのに役立ちます。HA デプロイメントでは、アクティブなコントローラーがクラッシュまたは削除されると、別のコントローラーをすぐに使用できます。このコントローラーは、現在使用できないコントローラーによって処理されていた API の処理を引き継ぎます。
OpenShift Serverless の HA は、リーダーの選択によって利用できます。これは、Knative Serving または Eventing コントロールプレーンのインストール後にデフォルトで有効になります。リーダー選択の HA パターンを使用する場合は、必要時に備えてコントローラーのインスタンスがスケジュールされ、クラスター内で実行されます。このコントローラーインスタンスは、リーダー選出ロックと呼ばれる共有リソースを使用するために競合します。リーダー選択ロックのリソースにアクセスできるコントローラーのインスタンスはリーダーと呼ばれます。
OpenShift Serverless の HA は、リーダーの選択によって利用できます。これは、Knative Serving または Eventing コントロールプレーンのインストール後にデフォルトで有効になります。リーダー選択の HA パターンを使用する場合は、必要時に備えてコントローラーのインスタンスがスケジュールされ、クラスター内で実行されます。このコントローラーインスタンスは、リーダー選出ロックと呼ばれる共有リソースを使用するために競合します。リーダー選択ロックのリソースにアクセスできるコントローラーのインスタンスはリーダーと呼ばれます。
10.2.1. Knative Eventing の高可用性レプリカの設定 リンクのコピーリンクがクリップボードにコピーされました!
					Knative Eventing の eventing-controller、eventing-webhook、imc-controller、imc-dispatcher、mt-broker-controller コンポーネントは、デフォルトでそれぞれ 2 つのレプリカを持つように設定されており、高可用性 (HA) を利用することができます。KnativeEventing カスタムリソース (CR) の spec.high-availability.replicas 値を変更して、これらのコンポーネントのレプリカ数を変更できます。
				
						Knative Eventing の場合、HA では mt-broker-filter および mt-broker-ingress デプロイメントはスケーリングされません。複数のデプロイメントが必要な場合は、これらのコンポーネントを手動でスケーリングします。
					
前提条件
- OpenShift Container Platform に対するクラスター管理者権限があるか、Red Hat OpenShift Service on AWS または OpenShift Dedicated に対するクラスターまたは専用管理者権限がある。
 - OpenShift Serverless Operator および Knative Eventing がクラスターにインストールされている。
 
手順
- 
							OpenShift Container Platform Web コンソールで、OperatorHub 
Installed Operators に移動します。  - 
							
knative-eventingnamespace を選択します。 - OpenShift Serverless Operator の Provided API 一覧で Knative Eventing をクリックし、Knative Eventing タブに移動します。
 - knative-eventing をクリックしてから、knative-eventing ページの YAML タブに移動します。
 KnativeEventingCR のレプリカ数を変更します。サンプル YAML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 特定のワークロードのレプリカの数を指定することもできます。
注記ワークロード固有の設定は、Knative Eventing のグローバル設定をオーバーライドします。
サンプル YAML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 高可用性の制限が反映されていることを確認します。
コマンドの例
oc get hpa -n knative-eventing
$ oc get hpa -n knative-eventingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE broker-filter-hpa Deployment/mt-broker-filter 1%/70% 3 12 3 112s broker-ingress-hpa Deployment/mt-broker-ingress 1%/70% 3 12 3 112s eventing-webhook Deployment/eventing-webhook 4%/100% 3 7 3 115s
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE broker-filter-hpa Deployment/mt-broker-filter 1%/70% 3 12 3 112s broker-ingress-hpa Deployment/mt-broker-ingress 1%/70% 3 12 3 112s eventing-webhook Deployment/eventing-webhook 4%/100% 3 7 3 115sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
10.2.2. Apache Kafka の Knative ブローカー実装の高可用性レプリカの設定 リンクのコピーリンクがクリップボードにコピーされました!
					高可用性 (HA) は、Apache Kafka コンポーネント kafka-controller および kafka-webhook-eventing の Knative ブローカー実装にはデフォルトで提供されており、これらはデフォルトでそれぞれ 2 つのレプリカを持つように設定されています。KnativeKafka カスタムリソース (CR) の spec.high-availability.replicas 値を変更して、これらのコンポーネントのレプリカ数を変更できます。
				
前提条件
- OpenShift Container Platform に対するクラスター管理者権限があるか、Red Hat OpenShift Service on AWS または OpenShift Dedicated に対するクラスターまたは専用管理者権限がある。
 - OpenShift Serverless Operator と Apache Kafka 用の Knative ブローカーがクラスターにインストールされている。
 
手順
- 
							OpenShift Container Platform Web コンソールで、OperatorHub 
Installed Operators に移動します。  - 
							
knative-eventingnamespace を選択します。 - OpenShift Serverless Operator の Provided APIs の一覧で Knative Kafka をクリックし、Knative Kafka タブに移動します。
 - knative-kafka をクリックしてから、knative-kafka ページの YAML タブに移動します。
 KnativeKafkaCR のレプリカ数を変更します。サンプル YAML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
10.2.3. 停止状態の予算のオーバーライド リンクのコピーリンクがクリップボードにコピーされました!
Pod Disruption Budget (PDB) は、Kubernetes API の標準機能であり、メンテナンス上の理由で Pod の再スケジュールが必要になったときにアプリケーションの中断を制限するのに役立ちます。
手順
- 
							
KnativeEventingカスタムリソース (CR) のminAvailable設定値を変更して、特定のリソースのデフォルトの PDB をオーバーライドします。 
minAvailable 設定が 70% の PDB の例
						たとえば、high-availability.replicas の値を 1 に変更して高可用性を無効にする場合は、対応する PDB minAvailable の値も 0 に更新してください。そうしないと、Pod 停止状態の予算によってクラスターまたは Operator の自動更新が妨げられます。