独自の持込みクラスタの作成
byo
プロバイダを使用してKubernetesクラスタを作成します。
これらのステップでは、byo
プロバイダを使用してKubernetesクラスタを作成するプロセスの概要を示します。 各ステップの実行に使用できるオプションが多数あるため、詳細なステップは提供しません。 これらのステップの多くで使用するメソッドとオプションを決定できます。
重要:
ここに示すステップおよびコマンドは例としてのみ提供されており、特定のデプロイメントにあわせて適応する必要があります。
- (オプション)既存のクラスタの
kubeconfig
ファイルのロケーションを設定します。いくつかのステップを実行するには、Kubernetesクラスタが必要です。
kubeconfig
ファイルのロケーションを設定することで、既存のクラスタをこの目的に使用できます。これを設定するには、
KUBECONFIG
環境変数を使用するか、ocne
コマンドで--kubeconfig
オプションを使用します。 これを構成ファイルに設定することもできます。kubeconfig
ファイルのロケーションを設定しない場合、必要に応じてlibvirt
プロバイダを使用してエフェメラル・クラスタが作成されます。 - (オプション)
libvirt
プロバイダを設定します。既存のKubernetesクラスタのロケーションを設定しない場合は、
libvirt
プロバイダを使用してエフェメラル・クラスタをプロビジョニングするようにlocalhostを設定します。libvirt
プロバイダの設定の詳細は、「libvirtプロバイダの設定」を参照してください。 - 自動Oracle Linuxインストールを準備します。
Kickstartファイルを使用してホストでOracle Linuxの自動インストールを実行するメソッドを決定します。 たとえば、ネットワーク・ドライブ、webサーバー、またはUSBドライブを使用できます。 ブート・カーネルに一致するカーネルおよびinitrd (初期RAMディスク)のみをプロビジョニングする必要があります。
Oracle Linux UEKブートISOファイルは、必要なカーネルおよびinitrdを含むブート・メディアとして、より小さいファイル・サイズで使用することをお薦めします。 「Oracle Linux yumサーバー」からOracle Linux ISOファイルをダウンロードします。
選択したメソッドを使用して、Oracle Linuxブート・メディアを準備します。
Oracle Linuxの自動インストール・オプションの詳細は、「Oracle Linux 9: Oracle Linuxのインストール」または「Oracle Linux 8: Oracle Linuxのインストール」を参照してください。
- OSTreeアーカイブ・コンテナ・イメージを作成します。
ocne image create
コマンドを使用してOSTreeアーカイブ・コンテナ・イメージを生成し、ocne image upload
コマンドを使用してインストール中に使用できる場所にアップロードします。 OSTreeイメージの作成およびコンテナ・レジストリへのアップロードの詳細は、「独自の持込みプロバイダのOSTreeイメージの作成」を参照してください。コンテナ・レジストリがない場合は、OSTreeアーカイブ・イメージをローカル・コンテナ・ランタイムにロードすることをお薦めします。 たとえば、arm64イメージのOSTreeアーカイブ・ファイルをlocalhostのPodmanにロードするには、次のものを使用します:
podman load < $HOME/.ocne/images/ock-1.32-arm64-ostree.tar
- OSTreeイメージを提供するコンテナを作成します。
Kubernetesクラスタなど、任意のコンテナ・ランタイムを使用します。 たとえば、localhostのPodmanにロードされたイメージを使用するには、次のものを使用します:
podman run -d --name ock-content-server -p 8080:80 localhost/ock-ostree:latest
- Ignitionファイルのロケーションを設定します。
Kubernetesクラスタ・イグニッション・ファイルを使用可能にする方法を決定します。
Ignitionファイルは、最初のブート時にすべてのホストで使用可能である必要があります。 イグニッション・ファイルは、ネットワーク・ファイル・サーバー(NFS)やwebサーバーなどを使用して、「アップストリームIgnitionのドキュメント」にリストされているプラットフォームのいずれかを使用して提供できます。 また、Ignition構成の生成時にインストールがかなり近いところに行われた場合は、Ignition構成ファイルをホストのルート・ファイル・システムに直接埋め込むこともできます。
- Kickstartファイルを作成します。
Kickstartファイルは、Oracle Linuxの自動インストールを定義します。 インストールでOSTreeを使用するための情報をKickstartファイルに含めます。 Kickstartファイルの作成の詳細は、「Oracle Linux 9: Oracle Linuxのインストール」または「Oracle Linux 8: Oracle Linuxのインストール」を参照してください。
Kickstartファイルは、インストール中に使用可能にする必要があります。 KickstartファイルをIgnitionファイルと同じロケーション(NFSやwebサーバーなど)に含めると便利です。
ルート・ファイル・システムにこの情報を埋め込まない場合は、KickstartファイルにOSTreeイメージ情報とIgnitionファイルのロケーションに関する情報を含める必要があります。 Ignitionファイルは後で作成されます。 たとえば、ベア・メタル・インストールでは次のようなものを使用できます:
... services --enabled=ostree-remount bootloader --append "rw ip=dhcp rd.neednet=1 ignition.platform.id=metal ignition.config.url=http://myhost.example.com/ignition.ign ignition.firstboot=1" ostreesetup --nogpg --osname ock --url http://myregistry.example.com/ostree --ref ock %post %end
OSTreeの詳細は、「アップストリームのOSTreeドキュメント」を参照してください。
- Kubernetesクラスタ構成ファイルを作成します。
作成するKubernetesクラスタを定義するクラスタ構成ファイルを生成します。 プロバイダが
byo
に設定されていることを確認します。 この例では、192.168.124.230
の仮想IPが使用されます。 仮想IPは、KubernetesクラスタAPIサーバーに使用されるネットワーク内の未使用のIPアドレスである必要があります。たとえば:
provider: byo name: byocluster virtualIp: 192.168.122.230 providers: byo: networkInterface: enp1s0
クラスタ構成ファイルに含めることができる内容については、「クラスタ構成ファイル」を参照してください。
- Kubernetesクラスタ・イグニッション情報を生成および公開します。
byo
プロバイダは、インフラストラクチャ・リソースをプロビジョニングしません。 Kubernetesクラスタ・ノードを自動的に作成する他のプロバイダとは異なり、byo
プロバイダは、ノード・タイプおよびクラスタ構成に適用されるIgnition構成を生成します。ocne cluster start
コマンドを使用して、最初のコントロール・プレーン・ノードを起動するイグニッション情報を生成します。 構文は次のとおりです。ocne cluster start
[{-u|--auto-start-ui} {true|false}] [{-o|--boot-volume-container-image} URI] [{-C|--cluster-name} name] [{-c|--config} path] [{-n|--control-plane-nodes} integer] [{-i|--key} path] [--load-balancer address] [{-P|--provider} provider] [{-s|--session} URI] [{-v|--version} version] [--virtual-ip IP] [{-w|--worker-nodes} integer]構文オプションの詳細は、Oracle Cloud Native Environment: CLIを参照してください。
このコマンドでクラスタ構成ファイルを使用し、出力をイグニッション・ファイルに保存します。 たとえば:
ocne cluster start --config myconfig.yaml > ignition.ign
ヒント:
Ignitionファイルは、
jq
ユーティリティを使用して検査できます。次に例を示します:jq . < ignition_file.ign { "ignition": { "config": { "replace": { "verification": {} } }, "proxy": {}, "security": { "tls": {} ...
インストール中に使用できるように、Ignitionファイルを公開します。
- 最初のコントロール・プレーン・ノードをブートします。
Kickstartファイルを使用してOracle Linuxホストをインストールします。 Kickstartファイルは、Oracle LinuxブートISO、OSTreeイメージおよびKubernetesクラスタIgnitionファイルを使用してホストを設定します。 このホストは、Kubernetesクラスタを起動する最初のコントロール・プレーン・ノードとして使用されます。
- コントロール・プレーン・ノードを使用してKubernetesクラスタを起動します。
ocne cluster start
コマンドを使用して、Kubernetesクラスタを起動し、構成済のソフトウェアをクラスタにインストールします。 構文は次のとおりです。ocne cluster start
[{-u|--auto-start-ui} {true|false}] [{-o|--boot-volume-container-image} URI] [{-C|--cluster-name} name] [{-c|--config} path] [{-n|--control-plane-nodes} integer] [{-i|--key} path] [--load-balancer address] [{-P|--provider} provider] [{-s|--session} URI] [{-v|--version} version] [--virtual-ip IP] [{-w|--worker-nodes} integer]構文オプションの詳細は、Oracle Cloud Native Environment: CLIを参照してください。
クラスタ構成ファイルを使用してクラスタを起動します。 たとえば:
ocne cluster start --config myconfig.yaml
コントロール・プレーン・ノードは、クラスタの起動、UI、アプリケーション・カタログおよびアプリケーションのインストールに使用されます。 コントロール・プレーン・ノードは、クラスタ構成ファイルで指定されたとおりに構成された単一ノードのKubernetesクラスタになりました。
kubectl
をインストールします。kubectl
のインストールおよびkubeconfig
ファイルの設定の詳細は、「クラスタへの接続」を参照してください。kubeconfig
ファイルのロケーションを新しいクラスタに設定します。 このファイルのロケーションが、クラスタの作成時に前のステップの出力に表示されます。- コントロール・プレーン・ノードがクラスタに追加されていることを確認します。
kubectl get nodes
コマンドを使用して、コントロール・プレーン・ノードがクラスタに追加されていることを確認します。 これにはしばらく時間がかかる場合があります。kubectl get nodes
- ワーカー・ノードのIgnitionファイルを生成して公開します。
ocne cluster join
コマンドを使用して、ワーカー・ノードをクラスタに結合するイグニッション情報を生成します。 構文は次のとおりです。ocne cluster join
[{-c|--config} path] [{-d|--destination} path] [{-N|--node} name] [{-P|--provider} provider] [{-r|--role-control-plane}]構文オプションの詳細は、Oracle Cloud Native Environment: CLIを参照してください。
クラスタ構成ファイルを使用して、出力をファイルに保存します。 たとえば:
ocne cluster join --kubeconfig $HOME/.kube/kubeconfig.byocluster --config myconfig.yaml > mycluster-join-w.ign
重要:
--kubeconfig
コマンド・オプションを使用して、BYOクラスタのロケーションを設定します。 このオプションは、このコマンドに必要です。クラスタに参加するトークンがこのコマンドによって生成され、このトークンを使用するコマンドが表示されます。 トークンはイグニッション・ファイルに含まれます。 このトークンを使用して、次のステップでワーカー・ノードをクラスタに結合します。
最初のコントロール・プレーン・ノードに使用したメソッドと同じメソッドでIgnitionファイルを公開します。 最初のコントロール・プレーン・ノードのIgnitionファイルを上書きするか、Kickstartファイルを編集してワーカー・ノードのIgnitionファイルのロケーションを設定できます。
- ワーカー・ノードのKubernetesブートストラップ・トークンを作成します。
前のステップで
ocne cluster join
コマンドから出力されたトークンを使用して、ワーカー・ノードをクラスタに結合します。ocne cluster console --node node_name --direct -- kubeadm token create token
このコマンドは、
ocne cluster console
コマンドを使用してコントロール・プレーン・ノードのコンソールに接続し、そのノードで実行されている単一ノード・クラスタにトークンを作成します。 トークンが出力に表示されます。ヒント:
このブートストラップ・トークンを再利用して、Kubernetesによって割り当てられたトークンの有効期限内にノードを追加できます。 または、ノードごとにトークンを作成できます。
- ワーカー・ノードをブートします。
Kickstartファイルを使用してOracle Linuxホストをインストールします。 このホストは、Kubernetesクラスタ内の最初のワーカー・ノードとして使用されます。
- ワーカー・ノードがクラスタに追加されていることを確認します。
kubectl get nodes
コマンドを使用して、ワーカー・ノードがクラスタに追加されていることを確認します。 これにはしばらく時間がかかる場合があります。kubectl get nodes
- 2番目のコントロール・プレーン・ノードのIgnitionファイルを生成して公開します。
ocne cluster join
コマンドを使用して、コントロール・プレーン・ノードをクラスタに結合するイグニッション情報を生成します。 たとえば:ocne cluster join --kubeconfig $HOME/.kube/kubeconfig.byocluster --role-control-plane --config myconfig.yaml > mycluster-join-cp.ign
クラスタに参加するための暗号化された証明書バンドルおよびトークンは、このコマンドによって生成および表示されます。 トークンはイグニッション・ファイルに含まれます。 次のステップで、このトークンおよび証明書バンドルを使用して、コントロール・プレーン・ノードをクラスタに結合します。
Ignitionファイルを公開します。
- 2番目のコントロール・プレーン・ノードのKubernetesブートストラップ・トークンを作成します。
コントロール・プレーン・ノードを追加する場合は、2つのものを作成する必要があります: 結合トークンおよび暗号化された証明書バンドル。 これらは、前のステップで
ocne cluster join
コマンドによって動的に作成されました。証明書バンドルを作成します:
ocne cluster console --node node_name --direct -- kubeadm init phase upload-certs --certificate-key certificate-key --upload-certs
このコマンドは、
ocne cluster console
コマンドを使用してコントロール・プレーン・ノードのコンソールに接続し、クラスタに証明書バンドルを作成します。結合トークンを作成します:
ocne cluster console --node node_name --direct -- kubeadm token create token
- 2番目のコントロール・プレーン・ノードをブートします。
Kickstartファイルを使用してOracle Linuxホストをインストールします。 このホストは、Kubernetesクラスタの2番目のコントロール・プレーン・ノードとして使用されます。
- コントロール・プレーン・ノードがクラスタに追加されていることを確認します。
kubectl get nodes
コントロール・プレーン・ノードがクラスタに参加している間に、コントロール・プレーン・コンポーネントが新しいノードに適応するように、
kubectl
によって定期的なエラーが報告されることがあります。 これらのエラーは、ノードがクラスタに正しく追加された場合に数秒後に停止します。 - 必要に応じて、このプロセスを繰り返してワーカー・ノードまたはコントロール・プレーン・ノードを追加します。