libvirtプロバイダ
libvirtを使用したKVMベースのKubernetesクラスタの作成に使用されるlibvirt
プロバイダについて学習します。
libvirt
プロバイダはデフォルトのクラスタ・プロバイダであり、カーネル・ベースの仮想マシン(KVM)を使用してKubernetesクラスタをプロビジョニングするために使用できます。 デフォルトのKVMスタックにはlibvirtが含まれ、デフォルトでOracle Linuxとともに含まれます。
ノート:
Oracle KVMスタックをお薦めします。このKVMバージョンは、Oracle Linuxシステムにさらに多くの機能を提供するためです。 Oracle KVMスタックおよびlibvirtの詳細は、「Oracle Linux: KVMユーザーズ・ガイド」を参照してください。
libvirtクラスタの作成に使用されるシステムは、Oracle Linux 8または9を実行している64ビットx86または64ビットARMシステムであり、Unbreakable Enterprise Kernelリリース7 (UEK R7)が含まれている必要があります。
libvirt
プロバイダは、単一のホストでlibvirtを使用してKubernetesクラスタをプロビジョニングし、テストおよび開発のためにKubernetesクラスタを作成および破棄する場合に役立ちます。 libvirt
プロバイダは、テストおよび開発クラスタに使用できますが、本番用のクラスタ構成をデプロイします。
重要:
すべてのlibvirtクラスタ・ノードが1つのホスト上で実行されているため、クラスタを実行しているホストが停止した場合、すべてのクラスタ・ノードも停止することに注意してください。
図3-1 libvirtクラスタ・アーキテクチャ

libvirtクラスタ・アーキテクチャには次のコンポーネントがあります:
-
CLI: Kubernetesクラスタの作成および管理に使用されるCLI。
ocne
コマンド。 -
デフォルト構成: すべての
ocne
コマンドの構成を含むYAMLファイル。 -
クラスタ構成: 特定のKubernetesクラスタの構成を含むYAMLファイル。
-
コンテナ・レジストリ: Kubernetesクラスタ内のノードの作成に使用されるイメージのプルに使用されるコンテナ・レジストリ。 デフォルトはOracle Container Registryです。
-
OCKイメージ: Kubernetesノードの作成に使用される、コンテナ・レジストリからプルされたOCKイメージ。
-
コントロール・プレーン・ロード・バランサ: コントロール・プレーン・ノードの高可用性(HA)に使用されるロード・バランサ。
-
コントロール・プレーン・ノード: Kubernetesクラスタ内のコントロール・プレーン・ノード。
-
ワーカー・ノード: Kubernetesクラスタ内のワーカー・ノード。
libvirt
プロバイダは、一部のCLIコマンドの使用時にKubernetesクラスタのプロビジョニングにも使用されます。 このクラスタ・タイプは、多くの場合、「かない」と呼ばれます。 エフェメラル・クラスタは、短期間存在し、CLIで必要に応じて作成および破棄される単一ノード・クラスタです。 CLIコマンドのオプションとしてkubeconfig
ファイルのロケーションを含めることで、既存のクラスタを一時クラスタとして使用することもできます。
図3-2 libvirt一時クラスタ

エフェメラル・クラスタ・アーキテクチャには次のコンポーネントがあります:
-
CLI: Kubernetesクラスタの作成および管理に使用されるCLI。
ocne
コマンド。 -
デフォルト構成: すべての
ocne
コマンドの構成を含むYAMLファイル。 -
クラスタ構成: 特定のKubernetesクラスタの構成を含むYAMLファイル。
-
クラスタAPIテンプレート: クラスタを作成するためのKubernetesクラスタAPIのクラスタ・リソースを含むYAMLファイル。
-
コンテナ・レジストリ: Kubernetesクラスタ内のノードの作成に使用されるイメージのプルに使用されるコンテナ・レジストリ。 デフォルトはOracle Container Registryです。
-
OCKイメージ: Kubernetesノードの作成に使用される、コンテナ・レジストリからプルされたOCKイメージ。
-
一時クラスタ: CLIコマンドの実行に使用される一時的なKubernetesクラスタ。 このデフォルト値は、localhost上のlibvirtプロバイダで作成された単一ノード・クラスタです。 これは外部クラスタの場合もあります。
単一ノード・クラスタおよび複数ノード・クラスタは、64ビットx86および64ビットARMシステムの両方で、Oracle Linux 8および9に作成できます。 すべてのクラスタ・ノードは1つのホストで実行されるため、ハイブリッド・クラスタを作成することはできません。 ただし、ARMシステムを使用してx86ハードウェアにリモート・クラスタを作成することも、逆にx86ハードウェアを使用してARMにリモート・クラスタを作成することもできます。
libvirt
プロバイダでは、ターゲット・システムでlibvirtが実行されている必要があり、ユーザーがlibvirtへのアクセス権を持つように構成されている必要があります。 Oracle CNEは、レガシー・シングル・ソケット・クライアントを使用してlibvirt接続を実装します。 ローカルlibvirtクラスタが作成されている場合は、UNIXドメイン・ソケットが使用されます。
リモート・システムにKubernetesクラスタを作成するには、libvirtのリモート・トランスポート・メカニズムを有効にします。 SSHキー・ベースの認証を通常のユーザーとしてリモート・システムに設定し、libvirtを実行する権限を持つユーザーを構成することをお薦めします。 ただし、libvirtリモート・トランスポート・オプションのいずれかを使用できます。 libvirtリモート・トランスポートの詳細については、「アップストリームlibvirtドキュメント」を参照してください。
ほとんどのリモート・クラスタ・デプロイメントでは、SSHを使用してUNIXドメイン・ソケットをCLIにトンネリングして戻すqemu+ssh
トランスポートを利用します。 Oracle CNEは、libvirtトランスポートまたはシステム・サービスを構成しません。 これは、OSのドキュメントに従って正しく設定する必要があります。
libvirt
プロバイダで作成されたクラスタはトンネルを作成し、クラスタがデプロイされているホスト上のポートからクラスタにアクセスできるようにします。 ポート範囲は6443から始まり、そこから増分します。 クラスタが削除されると、ポートは解放されます。 クラスタがリモート・システム上に作成されている場合は、6443から開始して、システム・ファイアウォールを介してさまざまなポートにアクセスできることを確認します。
重要:
テスト環境ではファイアウォールを無効にできますが、これは本番システムではお薦めしません。
ocne cluster start
コマンドを使用して、libvirt
プロバイダを使用してKubernetesクラスタを作成します。 このプロバイダがデフォルトであるため、プロバイダ・タイプを指定する必要はありません。 たとえば:
ocne cluster start
このコマンドは、すべてのデフォルト・オプションを使用して単一ノード・クラスタを作成し、UIおよびアプリケーション・カタログをインストールします。
ocne cluster start
コマンドにコマンドライン・オプションを追加して、コントロール・プレーンやワーカー・ノードの数など、デフォルト設定以外でクラスタを設定できます。 これらのコマンド・オプションについては、Oracle Cloud Native Environment: CLIを参照してください。
デフォルト設定をカスタマイズするには、デフォルトの構成ファイル、または作成するクラスタに固有の構成ファイルにもオプションを追加します。 これらの構成ファイルの詳細は、「Oracle Cloud Native Environment: Kubernetesクラスタ」およびOracle Cloud Native Environment: CLIを参照してください。
特権付きlibvirtインスタンスにアクセスできるシステムで起動されたクラスタの場合、クラスタの作成時に2つのkubeconfig
ファイルが作成され、1つはローカル・クラスタへのアクセス用、もう1つはリモート・クラスタ・ホストで使用できるファイルが作成されます。