高可用性クラスタ
この章では、Oracle CNEを使用してデプロイできる高可用性(HA) Kubernetesクラスタのタイプに関する概要について説明します。
Kubernetesは、コントロール・プレーン・ノードの複数のレプリカを使用してデプロイできます。 これらのレプリカへの自動フェイルオーバーにより、よりスケーラブルで回復性の高いサービスが提供されます。 このドキュメントでは、このタイプのクラスタ・デプロイメントをHAクラスタと呼びます。
重要:
HAクラスタを作成するには、少なくとも3つのコントロール・プレーン・ノードと2つのワーカー・ノードが必要です。
3つのコントロール・プレーン・ノードを使用してHAクラスタを作成すると、分散キー・ストアetcd
を介してそれらの間の構成データが確実にレプリケーションされるため、HAクラスタは、データ損失や稼働時間なしで障害が発生する単一のコントロール・プレーン・ノードに対して自己回復性があります。 複数のコントロール・プレーン・ノードに障害が発生した場合、データの損失を回避するために、クラスタ内のコントロール・プレーン・ノードをバックアップ・ファイルからリストアできます。
Oracle CNEは、etcd
がコントロール・プレーン・ノードで実行されるKubernetesスタックetcd
トポロジを実装します。 このトポロジの詳細は、「アップストリームのドキュメント」を参照してください。
ロード・バランサ
HAクラスタには、コントロール・プレーンのノードの高可用性を提供するロード・バランサが必要です。 ロード・バランサは、Kubernetes APIサーバーと通信して、コントロール・プレーン・ノードの高可用性を維持します。
外部ロード・バランサ・インスタンスを使用するか、CLIでコントロール・プレーン・ノードにロード・バランサをインストールできます。
外部ロード・バランサを使用する高可用性クラスタ
外部ロード・バランサを使用するようにHAクラスタを設定する場合、ロード・バランサを使用してコントロール・プレーン・ノードのリソースの可用性と効率を管理し、コントロール・プレーン・ノードのKubernetes API Serverのインスタンスがクラスタの可用性に影響を与えずに失敗することを確認します。
外部ロード・バランサを使用するには、HAクラスタ・デプロイメントを実行する前に、外部ロード・バランサを設定して使用する準備ができている必要があります。 Kubernetesクラスタの作成時に、ロード・バランサのホスト名およびポートがCLIのオプションとして入力されます。
内部ロード・バランサを使用する高可用性クラスタ
内部ロード・バランサを使用するようにHAクラスタを設定すると、CLIによって、NGINXおよびKeepalivedがsystemdサービスとしてコントロール・プレーン・ノードにインストールされ、ロード・バランサのデプロイメントが有効になります。 内部ロード・バランサは、Kubernetes API Serverのネイティブ・アクティブ/アクティブ高可用性ソリューションを構成します。
NGINXにより、コントロール・プレーン・ノードのリソースの可用性と効率が向上し、クラスタの可用性に影響を与えずに、コントロール・プレーン・ノード上のKubernetes APIサーバーのインスタンスに障害が発生する可能性があります。
内部ロード・バランサを使用する場合は、仮想IPアドレスとして使用するためにコントロール・プレーン・ネットワーク上のIPアドレスを確保する必要があります。 Keepalivedインスタンスは、他のコントロール・プレーン・ノードの状態をモニタリングし、ノードに障害が発生した場合はそのIPアドレスを適用することで、仮想IPアドレスに常に到達できるようにします。 Keepalivedは、問題が発生した場合にスタンバイ・コントロール・プレーン・ノードに自動的にフェイルオーバーするために使用されます。