Karmadaを使用した複数のOKEクラスタでのワークロードの管理
はじめに
Karmada (Kubernetes Armadaの略)は、アプリケーションを変更することなく、複数のKubernetesクラスタおよびクラウド環境でクラウドネイティブ・アプリケーションをシームレスに実行できる管理プラットフォームです。Karmadaは、KubernetesネイティブAPIと高度なスケジューリング機能を活用することで、オープンで真にマルチクラウドのKubernetesエクスペリエンスを提供します。
マルチクラウドおよびハイブリッド・クラウドのユース・ケース向けに設計されたKarmadaは、クラスタ間のアプリケーションを管理するためのターンキー自動化を提供します。そのコア機能には、一元管理、高可用性、自動障害リカバリ、インテリジェントなトラフィック・スケジューリングなどがあります。
目的
-
ホストOKEクラスタに
karmadaコンポーネントをインストールします。 -
2つのOKEメンバー・クラスタに参加して、カルマダに参加してください。
-
2つのOKEクラスタに分散したポッドを使用したデプロイメントを作成します。
前提条件
-
OCI上のアクティブ・テナンシ
-
リソースを作成するための十分な権限を持つユーザー
ノート:拡張クラスタにはワークロード・アイデンティティのみを使用できます。
-
リソースをデプロイするコンパートメントがすでに作成されています
-
コンパートメント内のすべてのVMの動的グループ:
All {instance.compartment.id = 'ocid1.compartment.oc1...'} -
インスタンス・プリンシパルを使用してOCI CLIコマンドを実行するポリシー:
allow dynamic-group <dynamic-group-name> to manage cluster-family in compartment <compartment-name>
タスク1: デモに必要なリソースの作成
ノート:次のステップは、デモ中に使用される3つのOKEクラスタと1つのVMをデプロイする方法を示しています。
-
githubからterraformファイルを含むリリースzipをダウンロードします: karmada-on-oke。
-
Oracle Resource Managerを使用して、スタックを作成および適用します。
- ハンバーガー・メニューを使用して、Oracle Resource Managerに移動します。
Stacksを選択します。Create stackを選択します。My configurationを選択します。My configurationセクションで、Zip fileが選択されていることを確認します。以前にダウンロードしたZipファイルを選択します。Uploadを選択します。- スタックにわかりやすい名前を付けます。
Nextを選択します。- VMへの接続に使用するssh公開キーを選択します。
- リソースが作成されるコンパートメントを選択します。
Nextを選択します。- 次の画面で、
Run applyを選択します。 Createを選択します。
-
VMのパブリックIPを取得します。
前のステップのジョブが正常に実行されると、ログの最後の行にVMのパブリックIPが含まれている必要があります。後で使用するために記録します。
タスク2: ホスト・クラスタへのKarmadaのインストール
- 以前に取得したIPを使用して、sshを使用してVMに接続します。
ssh -i <private-ssh-key> opc@<public-IP> -
rootユーザーに切り替えます。
sudo su - -
ホストクラスタにkarmadaコンポーネントをインストールします。
karmadactl init
タスク3: OKEクラスタ・メンバーへの参加
-
クラスタ
member1への参加:karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config join member1 --cluster-kubeconfig=$HOME/.kube/config-k1 -
クラスタ
member2の結合:karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config join member2 --cluster-kubeconfig=$HOME/.kube/config-k2 -
メンバー・クラスタの表示:
karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config get clusters
タスク4: Karmadaへのワークロードのデプロイ
-
KUBECONFIGをkarmada-apiサーバーを指すように設定します。export KUBECONFIG=/etc/karmada/karmada-apiserver.config -
デプロイメントおよび対応する伝播ポリシーを作成します。
kubectl apply -f https://raw.githubusercontent.com/oracle-devrel/oci-automation-hub/refs/heads/main/karmada-on-oke-sample/deployment.yaml kubectl apply -f https://raw.githubusercontent.com/oracle-devrel/oci-automation-hub/refs/heads/main/karmada-on-oke-sample/propagationpolicy.yaml -
デプロイメントを検証します。
karmadactl get deployment --operation-scope all出力は次のようになります。
# karmadactl get deployment --operation-scope all NAME CLUSTER READY UP-TO-DATE AVAILABLE AGE ADOPTION nginx Karmada 3/3 3 3 22m - nginx member2 2/2 2 2 22m Y nginx member1 1/1 1 1 22m Y3つのポッドのうち、2つのポッドが
member2で実行され、1つはmember1で実行されていることに注意してください。
タスク5: クリーン・アップ
- ホスト・クラスタからkarmadaコンポーネントをアンインストールします。
karmadactl --kubeconfig /root/.kube/config deinit
- terraformスタックを使用して作成されたリソースを破棄します。
- Oracle Resource Managerに戻ります。
- 作成したスタックを選択します。
Destroyを選択します。
確認
- 作成者 - Daniel Dinu (プリンシパル・クラウド・エンジニア)
その他の学習リソース
docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャンネルで無料のラーニングコンテンツにアクセスしてください。また、Oracle Learning Explorerになるには、education.oracle.com/learning-explorerにアクセスしてください。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Manage Workload on Multiple OKE Clusters Using Karmada
G55119-01