5.11. 高可用性またはシングルノードのクラスターの検出およびサポート


OpenShift Container Platform クラスターの高可用性 (HA) モードと非 HA モードの両方で Operator を適切に実行するには、Operator SDK を使用してクラスターのインフラストラクチャートポロジーを検出し、クラスターのトポロジーに適合するリソース要件を設定します。

OpenShift Container Platform クラスターは、複数のノードを使用する高可用性 (HA) モード、またはシングルノードを使用する非 HA モードで設定できます。シングルノード OpenShift とも呼ばれるシングルノードクラスターには、より慎重なリソース制約がある可能性があります。したがって、シングルノードクラスターにインストールされた Operator がそれに応じて調整でき、正常に実行できることが重要です。

OpenShift Dedicated で提供されるクラスター高可用性モード API にアクセスすることにより、Operator の作成者は、Operator SDK を使用して、Operator がクラスターのインフラストラクチャートポロジー (HA モードまたは非 HA モード) を検出できるようにすることができます。カスタム Operator ロジックは、検出されたクラスタートポロジーを使用して、Operator およびそれが管理するオペランドまたはワークロードの両方のリソース要件を、トポロジーに最も適したプロファイルに自動的に切り替えるように開発することができます。

重要

Operator プロジェクトの関連スキャフォールディングおよびテストツールなど、Red Hat がサポートするバージョンの Operator SDK CLI ツールは非推奨となり、OpenShift Dedicated の今後のリリースで削除される予定です。Red Hat は、現在のリリースライフサイクル中にこの機能のバグ修正とサポートを提供しますが、この機能は今後、機能拡張の提供はなく、OpenShift Dedicated リリースから削除されます。

新しい Operator プロジェクトを作成する場合、Red Hat がサポートするバージョンの Operator SDK は推奨されません。既存の Operator プロジェクトを使用する Operator 作成者は、OpenShift Dedicated 4 でリリースされるバージョンの Operator SDK CLI ツールを使用してプロジェクトを維持し、OpenShift Dedicated の新しいバージョンを対象とする Operator リリースを作成できます。

Operator プロジェクトの次の関連ベースイメージは 非推奨 ではありません。これらのベースイメージのランタイム機能と設定 API は、バグ修正と CVE への対応のために引き続きサポートされます。

  • Ansible ベースの Operator プロジェクトのベースイメージ
  • Helm ベースの Operator プロジェクトのベースイメージ

サポートされていない、コミュニティーによって管理されているバージョンの Operator SDK は、Operator SDK (Operator Framework) を参照してください。

5.11.1. クラスター高可用性モード API について

OpenShift Dedicated は、Operator がインフラストラクチャートポロジーの検出に使用するクラスター高可用性モード API を備えています。インフラストラクチャー API は、インフラストラクチャーに関するクラスター全体の情報を保持します。Operator Lifecycle Manager(OLM) 管理の Operator は、高可用性モードに基づいてオペランドまたは管理ワークロードを異なる方法で設定する必要がある場合にインフラストラクチャー API を使用できます。

インフラストラクチャー API では、infrastructureTopology ステータスは、コントロールプレーンノードで実行されないインフラストラクチャーサービスの期待値を表します。通常、これは値が master 以外の ロール のノードセレクターでわかります。controlPlaneTopology ステータスは、通常コントロールプレーンノードで実行されるオペランドの期待値を表します。

ステータスがいずれの場合もデフォルト設定は HighlyAvailable で、複数ノードクラスターで Operator が行う動作を表します。SingleReplica 設定は、シングルノード OpenShift とも呼ばれるシングルノードクラスターで使用されます。この設定は、オペランドを高可用性運用向けに設定しないよう Operator に指示するものです。

OpenShift Dedicated インストーラーは、次のルールに従って、クラスターの作成時のレプリカ数に基づいて controlPlaneTopology および infrastructureTopolog ステータスフィールドを設定します。

  • コントロールプレーンのレプリカ数が 3 未満の場合には、controlPlaneTopology のステータスは SingleReplica に設定されます。それ以外の場合は、HighlyAvailable に設定されます。
  • ワーカーレプリカ数が 0 の場合に、コントロールプレーンノードもワーカーとして設定されます。したがって、infrastructureTopology のステータスは controlPlaneTopology ステータスと同じです。
  • ワーカーレプリカ数が 1 の場合、infrastructureTopologySingleReplica に設定されます。それ以外の場合は、HighlyAvailable に設定されます。

5.11.2. Operator プロジェクトでの API 使用状況の例

Operator の作成者は、以下の例のように、通常の Kubernetes コンストラクトおよび controller-runtime ライブラリーを使用してインフラストラクチャー API にアクセスできるように Operator プロジェクトを更新できます。

controller-runtime ライブラリーの例

// Simple query
 nn := types.NamespacedName{
 Name: "cluster",
 }
 infraConfig := &configv1.Infrastructure{}
 err = crClient.Get(context.Background(), nn, infraConfig)
 if err != nil {
 return err
 }
 fmt.Printf("using crclient: %v\n", infraConfig.Status.ControlPlaneTopology)
 fmt.Printf("using crclient: %v\n", infraConfig.Status.InfrastructureTopology)

Kubernetes のコンストラクトの例

operatorConfigInformer := configinformer.NewSharedInformerFactoryWithOptions(configClient, 2*time.Second)
 infrastructureLister = operatorConfigInformer.Config().V1().Infrastructures().Lister()
 infraConfig, err := configClient.ConfigV1().Infrastructures().Get(context.Background(), "cluster", metav1.GetOptions{})
 if err != nil {
 return err
 }
// fmt.Printf("%v\n", infraConfig)
 fmt.Printf("%v\n", infraConfig.Status.ControlPlaneTopology)
 fmt.Printf("%v\n", infraConfig.Status.InfrastructureTopology)

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.