Oracle Database Operator for Kubernetes

Oracle Database Operator for Kubernetesクラスタ・アドオンを有効にすると、次のキー/値のペアを引数として渡すことができます。

Oracle Database Operatorをクラスタ・アドオンとして使用するには、cert-managerもデプロイする必要があります(スタンドアロン製品またはクラスタ・アドオンのいずれか)。スタンドアロン製品としてcert-managerをデプロイする場合は、skipAddonDependenciesCheck構成引数をtrueに設定します。

ほとんどのクラスタ・アドオンに共通の構成引数
キー(APIおよびCLI) キーの表示名(コンソール) 説明 必須/オプション デフォルト値 値の例
affinity affinity

アフィニティ・スケジューリング・ルールのグループ。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • NVIDIA GPUオペレータ
可能な等価:
  • ノード機能の検出、master.affinityの使用
  • NVIDIA Network Operator、operator.affinityを使用
  • CSIドライバSMB、contoller.affinityを使用
  • AMD GPUオペレータ、controllerManager.affinityを使用
オプション null null
nodeSelectors ノード・セレクター

ノード・セレクタおよびノード・ラベルを使用して、アドオン・ポッドが実行されるワーカー・ノードを制御できます。

ポッドをノードで実行するには、ポッドのノード・セレクタのキー/値がノードのラベルと同じである必要があります。

nodeSelectorsを、ポッドのノード・セレクタとワーカー・ノードのラベルの両方に一致するキー/値ペアに設定します。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • NVIDIA GPUオペレータ
  • CSIドライバ SMB
可能な等価:
  • ノード機能の検出、worker.nodeSelectorの使用
  • NVIDIA Network Operator、operator.nodeSelectorsを使用
  • AMD GPU演算子。selectorまたはcontrollerManager.nodeSelectorを使用します
オプション null {"foo":"bar", "foo2": "bar2"}

ポッドは、foo=barまたはfoo2=bar2ラベルを持つノードでのみ実行されます。

numOfReplicas numOfReplicas アドオン配備の複製の数。
未使用者:
  • AMD GPUプラグイン
  • NVIDIA GPUオペレータ
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
可能な等価:
  • CoreDNS。nodesPerReplicaを使用します。
  • ノード機能の検出、master.replicaCountの使用
  • AMD GPUオペレータ、controllerManager.replicasを使用
必須 1

クラスタごとにアドオン・デプロイメントのレプリカを1つ作成します。

2

クラスタごとにアドオン・デプロイメントの2つのレプリカを作成します。

rollingUpdate rollingUpdate

maxSurgeおよびmaxUnavailableによるローリング更新の望ましい動作を制御します。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • ノード機能検出
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
可能な等価:
  • NVIDIA GPU Operator、daemonsets.rollingUpdate.maxUnavailableを使用
  • AMD GPU演算子。devicePluginmetricsExportertestRunner configManagerまたはdraDriverupgradePolicyを使用します。
オプション null null
tolerations 許容範囲

テイントおよび許容範囲を使用して、アドオン・ポッドが実行されるワーカー・ノードを制御できます。

taintがあるノード上でポッドを実行するには、ポッドに対応する許容範囲が必要です。

tolerationsを、ポッドの許容範囲とワーカー・ノードのテイントの両方に一致するキー/値のペアに設定します。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

可能な等価:
  • ノード機能の検出。master.tolerationsまたはworker.tolerations、あるいはその両方を使用します。
  • NVIDIA GPU Operator、daemonsets.tolerationsを使用
  • NVIDIA Network Operator、operator.tolerationsを使用
  • CSIドライバSMB、controller.tolerationsを使用
  • AMD GPUオペレータ。 devicePluginmetricsExportertestRunnerconfigManagerdraDriverまたはcontrollerManagerで許容値を使用します。
オプション null [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

この許容範囲を持つポッドのみが、tolerationKeyFoo=tolerationValBar:noScheduleテイントを持つワーカー・ノードで実行できます。

topologySpreadConstraints topologySpreadConstraints

指定されたトポロジ間で一致するポッドを分散する方法。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • ノード機能検出
  • NVIDIA GPUオペレータ
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
  • AMD GPU演算子
オプション null null
このクラスタ・アドオンに固有の構成引数
キー(APIおよびCLI) キーの表示名(コンソール) 説明 必須/オプション デフォルト値 値の例
manager.ContainerResources マネージャ・コンテナ・リソース

アドオン・コンテナが要求するリソース数量を指定し、アドオン・コンテナが超過できないリソース使用量制限を設定できます。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

オプション null {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

100ミリコアのCPUと100メビバイトのメモリーをリクエストするアドオン・コンテナを作成します。アドオンコンテナを500MバイトのCPUおよび200Mバイトのメモリーに制限します。

skipAddonDependenciesCheck skipAddonDependenciesCheck 他の必要なアドオンがデプロイされているかどうか(cert-managerアドオンなど)。 オプション null true
大規模なクラスタに関する考慮事項

次の表に、大規模クラスタでこのクラスタ・アドオンを構成する際の考慮事項を示します。

引数名 ロールWRTノード数 説明 クラスタ・サイズが増加するにつれて リスク 推奨事項
manager.ContainerResources あり

オペレータ・ポッドのCPUおよびメモリのリクエストと制限を定義します。

クラスタ・サイズが増加すると、オペレータは次のことを経験します。

  • インフォーマ・キャッシュの著しい増加
  • その他のウォッチストリーム
  • より大きなメモリー・フットプリント
  • より多くの照合アクティビティ

リソースのサイズが小さい場合:

  • オペレータ・ポッドは、メモリー制限を超えているため終了する場合があります。
  • リコンシリエーションのレイテンシが増加する場合があります。
  • イベント・キュー・バックログにより、処理が遅延する場合があります。

大規模なクラスタで追加の負荷を処理するために十分なメモリーとCPUを割り当てます。クラスタ・サイズが大きくなるとインフォーマ・キャッシュが大きくなるため、メモリーのサイズ設定に特に注意してください。

numOfReplicas なし

デプロイされたオペレータ・ポッドの数を制御します。

レプリカを追加すると、リーダーの選択によってフォルト・トレランスとフェイルオーバーが向上します。

コントローラのアクティブなリーダーとして機能するポッドは1つだけです。その他のレプリカはスタンバイに残り、リーダーに障害が発生した場合にのみ引き継ぎます。

スタンバイレプリカでは同じコントローラのリコンシリエーションループが処理されないため、レプリカの数を増やすと、リコンシリエーションスループットの線形スケーリングは行われません。

レプリカ数が少ないと、オペレータのダウンタイムのリスクが高まり、障害後のリカバリが遅くなります。

高可用性を実現するには、中程度の数のレプリカ(3から5など)を使用します。リコンシリエーション・パフォーマンスを向上させるためにレプリカの数を増やさないでください。

affinity / nodeSelectors / tolerations なし

オペレータ・ポッドがクラスタ内でスケジュールされる場所を制御します。

適切なポッド配置:

  • リソース集中型のワークロードからの干渉を減らします。
  • 解約が少なく中断が少ない安定したノードでオペレータを維持します。
  • オペレータは、コントロールプレーンアドオンに適した専用ノードまたはハイメモリーノード上で実行できます。
正しく設定されていない場合、Oracle Database Operatorが間違ったノードに配置されたり、スケジュールに失敗したりすると、リコンシリエーションの遅延やパフォーマンスの不安定化につながる可能性があります。

これらの引数を使用して、専用インフラストラクチャ・ノードでオペレータ・ポッドをスケジュールします。ポッド・アンチアフィニティ・ルールを必要に応じて適用して、レジリエンスを向上させます。

rollingUpdate なし

オペレータのデプロイメント更新戦略を制御します。

大規模クラスタでのアップグレード時には、ローリング更新戦略は次のようになります。

  • オペレータの停止時間を回避します。
  • 少なくとも一部のレプリカの可用性を維持します。
  • すべてのレプリカが同時に終了しないようにします。

適切に構成されていない場合、アップグレードによって一度に多数のOracle Database Operatorポッドが一時的に停止され、リコンシリエーションの遅延やフェイルオーバーの安全性の損失が発生する可能性があります。

クラスタ操作を中断せずにアップグレードを完了できるように、 maxUnavailable maxSurge などのローリング更新設定を構成します。

topologySpreadConstraints なし

オペレータ・レプリカがノードおよび可用性ドメイン間でどのように分散されるかを制御します。

レプリカを分散すると、すべてのオペレータ・ポッドが同じノードまたは同じ可用性ドメインで実行されなくなり、ノードまたは可用性ドメイン障害の影響が軽減されます。

正しく構成されていない場合、オペレータ・ポッドは同じノードまたは同じ可用性ゾーンでスケジュールされる可能性があり、ノードまたはゾーンの障害時に複数のレプリカが失われるリスクが高くなります。

大規模クラスタで高可用性を実現するには、トポロジ分散制約を使用します。