はじめに
commit
e8b5a0cのsrc/hack/local-running.shにあるチャートコマンドで検証済み。手順は親クラスタ 1 つと子クラスタ 1 つ以上、加えてkubectlとhelmがパスに通っていることを想定。
前提
- Kubernetes クラスタ 2 つ (親 1 つ、子 1 つ)。リリースが対応するバージョンであること。Clusternet
v0.18.xは Kubernetes>=v1.30を要求する (README)。ローカル試用には kind クラスタで十分。 - 各クラスタのコンテキストを設定した
kubectl。 - チャートをインストールするための
helm(v3)。 - 子が登録のためにダイヤルアウトするので、親 API サーバのアドレスが子から到達可能であること。
インストール
公式の Helm チャートリポジトリを追加する (src/hack/local-running.sh:116)。
helm repo add clusternet https://clusternet.github.io/charts
helm repo update最初の動く構成
以下の手順は src/hack/local-running.sh を踏襲している。親の手順は親コンテキストに対して、agent の手順は子コンテキストに対して実行する。
親側の 3 コンポーネントを
clusternet-systemnamespace にインストールする (src/hack/local-running.sh:122,src/hack/local-running.sh:129,src/hack/local-running.sh:134)。bashhelm install clusternet-hub -n clusternet-system --create-namespace clusternet/clusternet-hub helm install clusternet-scheduler -n clusternet-system --create-namespace clusternet/clusternet-scheduler helm install clusternet-controller-manager -n clusternet-system --create-namespace clusternet/clusternet-controller-manager子が登録に使う bootstrap token を作成する (
src/hack/local-running.sh:124)。これはサンプルの token を親に適用する。bashkubectl apply -f https://raw.githubusercontent.com/clusternet/clusternet/main/manifests/samples/cluster_bootstrap_token.yamlagent が
parentURLとして必要とする親 API サーバのアドレスを調べる。bashkubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}'clusternet-agentを子クラスタにインストールし、親と手順 2 の bootstrap token を指定する (src/hack/local-running.sh:138)。URL は手順 3 の値に置き換える。bashhelm install clusternet-agent -n clusternet-system --create-namespace \ --set parentURL=https://PARENT-APISERVER:PORT \ --set registrationToken=07401b.f395accd246ae52d \ clusternet/clusternet-agent
動作確認
親クラスタで、登録された子クラスタを一覧する。ManagedCluster CRD の短縮名は mcls。
kubectl get mcls -A登録に成功した子は、専用の namespace 内に ManagedCluster として現れる。その後、親で Subscription を作成してワークロードを配布できる。src/examples/replication-scheduling と src/examples/static-dividing-scheduling のサンプルマニフェストが両方のスケジューリング戦略を示す。
次に読むもの
- クイックスタートチュートリアル は
kindと 3 つの子クラスタで Clusternet をローカル構築する。その裏のスクリプトがsrc/hack/local-running.sh。 - インストールオプション、sync モード、
extraArgs.cluster-sync-modeの値 (Push、Pull、Dual) は公式ドキュメントを参照 (Introduction)。 - 親 API サーバが bootstrap-token 認証に対応しない場合 (例: k3s) は、公式の Helm インストールドキュメントに従い ServiceAccount token を代わりに使う。