このページの目次
マルチクラスタCN2の管理
概要 マルチクラスターインストールに固有のライフサイクル管理タスクを実行する方法について説明します。
このセクションでは、マルチクラスター・インストールに固有のタスクについて説明します。マルチクラスタインストール内の特定のクラスタで管理タスク(クラスタ内のノードの追加と削除、クラスタのアップグレードなど)を実行する場合は、 単一クラスタCN2の管理を参照してください。
ワークロードクラスターのアタッチ
この手順を使用して、分散ワークロードクラスター (カーネルモードデータプレーンを実行) を作成し、中央クラスターに接続します。DPDKデータ プレーンを実行する場合は、このドキュメントのDPDKの例から推定します。
この手順の例で使用するマニフェストは、 k8s/multi-cluster/distributed_cluster_deployer_example.yaml と k8s/multi-cluster/distributed_cluster_vrouter_example.yaml です。この手順では、これらのマニフェストが manifests ディレクトリに配置されていることを前提としています。
- インストールの前にの説明に従って、分散ワークロードクラスターを準備します。
- 分散ワークロードクラスターを作成します。
新しいクラスターを作成します。 ランチャーRKE2クラスターの作成 の手順に従うか、独自の方法を使用してクラスターを作成できます。クラスターには、次の特性が必要です。
- クラスタにはCNIプラグインはありません。
- マルチクラスターのセットアップでは、クラスターごとに異なるポッドとサービス サブネットを構成する必要があります。これらのサブネットは、マルチクラスター全体で一意である必要があります。
- 複数クラスターのセットアップでは、各クラスター内のノードに異なるノード名を構成する必要があります。ノード名は、マルチクラスター全体で一意である必要があります。
- 分散ワークロードクラスターにCN2コンポーネントをインストールします。
- ワークロード クラスターで、中央クラスターから kubeconfig をコピーします。ここでは、これを中央クラスターkubeconfigと呼びます。
scp user@central:~/.kube/config central-cluster-kubeconfig
- ワークロード クラスターで、contrail-deploy 名前空間を作成します。
kubectl create ns contrail-deploy
- ワークロード クラスターで、中央クラスターの kubeconfig から Kubernetes シークレットを作成し、そのシークレットcentral-kubeconfigに という名前を付けます。
メモ:
シークレット central-kubeconfigに名前を付ける必要があります。
kubectl create secret generic central-kubeconfig -n contrail-deploy --from-file=kubeconfig=/root/contrail/central-cluster-kubeconfig
メモ:中央クラスター kubeconfig ファイルへの絶対パスを指定する必要があります。
- ワークロードクラスターで、デプロイ機能マニフェストを適用します。デプロイヤーは、CN2コンポーネントのライフサイクル管理を提供します。
このマニフェストには、前のサブステップで作成したシークレットへの central-kubeconfig 参照が含まれています。
kubectl apply -f manifests/distributed_cluster_deployer_example.yaml
- Contrailデプロイ機能が起動していることを確認します。これには数分かかる場合があります。
kubectl get pods -n contrail-deploy
NAME READY STATUS RESTARTS AGE contrail-k8s-deployer-6458859585-xhwx6 1/1 Running 0 6m
- ワークロード クラスターで、証明書マネージャー マニフェストを適用します。cert-manager は、すべての管理プレーン接続とコントロール プレーン接続の暗号化を提供します。
kubectl apply -f manifests/distributed_cluster_certmanager_example.yaml
- ワークロード クラスターで、中央クラスターから kubeconfig をコピーします。ここでは、これを中央クラスターkubeconfigと呼びます。
- 中央クラスターで、新しいワークロード クラスターの kubemanager を作成して、新しいワークロード クラスターを接続します。
- 中央クラスターで、分散ワークロード クラスターから kubeconfig をコピーします。ここでは、これを workload-cluster-kubeconfig と呼びます。
scp user@workload:~/.kube/config workload-cluster-kubeconfig
- 中央クラスターで、分散ワークロードクラスターkubeconfigからKubernetesシークレットを作成し、シークレットのわかりやすい名前(例:workload-kubeconfig)を選択します。
kubectl create secret generic workload-kubeconfig -n contrail --from-file=kubeconfig=/root/contrail/workload-cluster-kubeconfig
- 次の内容の kubemanager マニフェストを作成します。マニフェストにわかりやすい名前 ( kubemanager-cluster1.yaml など) を選択します。
apiVersion: configplane.juniper.net/v1alpha1 kind: Kubemanager metadata: name: <CR name> namespace: contrail spec: common: containers: - image: <contrail-image-repository> name: contrail-k8s-kubemanager podV4Subnet: <pod-v4-subnet-of-remote-cluster> serviceV4Subnet: <service-v4-subnet-of-remote-cluster> podV6Subnet: <pod-v6-subnet-of-remote-cluster> serviceV6Subnet: <service-v6-subnet-of-remote-cluster> clusterName: <worker-cluster-name> kubeconfigSecretName: <secret-name> enableNad: <true/false> listenerPort: <listener-port> constantRouteTargetNumber: <rt-number>
表1:Kubemanager CRD パラメーター の意味の例 名前 カスタム リソースの名前。 kubemanager-cluster1 イメージ イメージを取得するリポジトリ enterprise-hub.juniper.net/contrail-container-prod/contrail-k8s-kubemanager:23.2.0.156 podV4Subnet 分散ワークロードクラスター用に以前に構成した IPv4 ポッドサブネット。 このサブネットは、マルチクラスター全体で一意である必要があります。
10.234.64.0 serviceV4Subnet 分散ワークロードクラスター用に以前に設定したIPv4サービスサブネット。 このサブネットは、マルチクラスター全体で一意である必要があります。
10.234.0.0/18 podV6Subnet 分散ワークロードクラスター用に以前に構成した IPv6 ポッドサブネット。 このサブネットは、マルチクラスター全体で一意である必要があります。
FD85:EE78:D8A6:8608::1:0000/112 serviceV6Subnet 分散ワークロードクラスター用に以前に構成したIPv6サービスサブネット。 このサブネットは、マルチクラスター全体で一意である必要があります。
FD85:EE78:D8A6:8608::1000/116 クラスタ名 ワークロード クラスターの名前。 ワークロード クラスター kubeconfigSecretName ワークロード クラスターの kubeconfig トークンを含むシークレットの名前。 workload-kubeconfig enableNad true または false (ネットワーク アドレス定義を有効にするかどうか) True リスナーポート Contrail コントローラーがこのワークロード クラスターとの通信をリッスンするポート。 最初のワークロードクラスターのポートを19446に設定し、後続のワークロードクラスターごとに1ずつ増やします。
19446 定数ルートターゲット番号 このワークロード クラスターのルート ターゲット。 最初のワークロード クラスターのルート ターゲットを 7699 に設定し、後続のワークロード クラスターごとに 100 ずつ増分します。
7699 - 中央クラスターで、先ほど作成した kubemanager マニフェストを適用します。
kubectl apply -f manifests/kubemanager-cluster1.yaml
- 中央クラスターで、ワークロード クラスターの名前空間が表示されていることを確認します。
kubectl get ns
名前空間の形式は次のとおりです。
<kubemanager-name>-<workload-cluster-name>-<namespace>
例えば:kubemanager-workload1-workload-cluster-contrail
- 中央クラスターで、分散ワークロード クラスターから kubeconfig をコピーします。ここでは、これを workload-cluster-kubeconfig と呼びます。
- 最後に、ワークロード クラスターに vRouter をインストールします。
kubectl apply -f manifests/distributed_cluster_vrouter_example.yaml
ワークロードクラスターのデタッチ
- 中央クラスターで、関連付けられている kubemanager を削除します。
kubectl delete kubemanager -n contrail <kubemanager-name>
- 削除する分散ワークロードクラスターで、vRouter を削除します。
kubectl delete vrouter -n contrail contrail-vrouter-masters
kubectl delete vrouter -n contrail contrail-vrouter-nodes
- 中央クラスターで、分散ワークロードクラスターの名前空間を削除します。
名前空間をリストし、分散ワークロードクラスターに関連付けられているすべての名前空間を削除します。
kubectl get ns
kubectl delete ns <kubemanager-name>-<workload-cluster-name>-<namespace>
- 中央クラスターで、デタッチするワークロードクラスターに関連付けられているシークレットを削除します。
kubectl delete secret <secret-name> -n contrail
CN2のアンインストール
- ワークロードクラスターのデタッチの 手順に従って、削除する ワークロードクラスターをデタッチ します。
- ワークロードクラスター内のCN2をアンインストールします。
- 「CN2 のアンインストール」 の手順に従って、ワークロード クラスター内の CN2 をアンインストール します。
これらのリソースは既に削除されているため、NotFound エラーは無視してください。
- ワークロードクラスター で、分散ワークロードクラスターのデフォルトのポッドネットワーク名前空間に関連するすべてのリソースがなくなったことを確認し、contrail 名前空間に関連するすべてのリソースがなくなったことを確認します。
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n <default pod network namespace>
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n contrail
ワークロード クラスターから CN2 をアンインストールするだけなら、完了です。中央クラスタからCN2もアンインストールする場合は、次の手順に進みます。
- 「CN2 のアンインストール」 の手順に従って、ワークロード クラスター内の CN2 をアンインストール します。
- 中央クラスタでCN2をアンインストールします。
- CN2のアンインストールの 手順に従って、中央クラスタの CN2をアンインストール します。
これらのリソースは既に削除されているため、NotFound エラーは無視してください。
- 中央クラスターで、contrail、contrail-system、contrail-deploy 名前空間に関連するすべてのリソースが削除されていることを確認します。
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n contrail
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n contrail-system
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n contrail-deploy
- CN2のアンインストールの 手順に従って、中央クラスタの CN2をアンインストール します。