マルチクラスターCN2の管理
概要 マルチクラスターのインストールに固有のライフ サイクル管理タスクを実行する方法について説明します。
このセクションでは、マルチクラスターインストールに固有のタスクについて説明します。特定のクラスタ内の管理タスク(クラスタ内のノードの追加と削除、クラスタのアップグレードなど)をマルチクラスターインストール内で実行する場合は、「 単一クラスタCN2の管理」を参照してください。
リリース 23.1 でのワークロード クラスターのアタッチ
リリース 23.1 で分散ワークロード クラスター (カーネル モード データ プレーンを実行) を作成し、中央クラスターにアタッチするには、次の手順を実行します。DPDK データ プレーンを実行する場合は、このドキュメントの DPDK の例から推定します。
この例の手順で使用するマニフェストは、 マルチクラスター/distributed_cluster_deployer_example.yaml と multi-cluster/distributed_cluster_vrouter_example.yaml です。手順では、これらのマニフェストを マニフェスト ディレクトリに 配置したことを前提としています。
- 「インストールする前に」の説明に従って、分散ワークロード クラスターを準備します。
- 分散ワークロード クラスターを作成します。
新しいクラスタを作成します。 「Kubernetes クラスターの作成 」の手順に従うことも、独自の方法でクラスターを作成することもできます。クラスターには、以下の特性が必要です。
- クラスターにCNIプラグインはありません。
- ノードローカルDNSを無効にします。
- マルチクラスター設定では、各クラスターで異なるポッドとサービスサブネットを設定する必要があります。これらのサブネットは、マルチクラスター内で一意にする必要があります。
- マルチクラスタ設定では、各クラスタのノードに異なるノード名を設定する必要があります。ノード名は、マルチクラスター全体で一意である必要があります。
- 分散ワークロードクラスターにCN2コンポーネントをインストールします。
- ワークロード クラスターで、中央クラスターから kubeconfig をコピーします。ここでは、この central-cluster-kubeconfig と呼びます。
scp user@central:~/.kube/config central-cluster-kubeconfig
- ワークロード クラスターで、Contrail-deploy 名前空間を作成します。
kubectl create ns contrail-deploy
- ワークロード クラスターで、中央クラスターから Kubernetes シークレットを kubeconfig に作成し、そのシークレットに名前を付けますcentral-kubeconfig。
メモ:
シークレット central-kubeconfigには名前を付けなければなりません。
kubectl create secret generic central-kubeconfig -n contrail-deploy --from-file=kubeconfig=/root/contrail/central-cluster-kubeconfig
メモ:central-cluster-kubeconfig ファイルへの絶対パスを指定する必要があります。
- ワークロード クラスターで、デプロイ者マニフェストを適用します。導入者は、CN2コンポーネントのライフサイクル管理を提供します。
このマニフェストには、前のサブステップで作成した central-kubeconfig シークレットへの参照が含まれています。
kubectl apply -f manifests/distributed_cluster_deployer_example.yaml
- Contrail-deployer が起動したことを確認します。数分かかる場合があります。
kubectl get pods -n contrail-deploy
NAME READY STATUS RESTARTS AGE contrail-k8s-deployer-6458859585-xhwx6 1/1 Running 0 6m
- ワークロード クラスターで、cert-manager マニフェストを適用します。cert-manager は、管理プレーンとコントロール プレーンのすべての接続に暗号化を提供します。
kubectl apply -f manifests/distributed_cluster_certmanager_example.yaml
- ワークロード クラスターで、中央クラスターから kubeconfig をコピーします。ここでは、この central-cluster-kubeconfig と呼びます。
- 中央クラスターで、新しいワークロード クラスター用の kubemanager を作成して、新しいワークロード クラスターをアタッチします。
- 中央クラスターで、分散ワークロード・クラスターから kubeconfig をコピーします。ここではワークロードクラスター-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.1.0.282 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 定数RouteTargetNumber このワークロード クラスターのルート ターゲット。 最初のワークロード・クラスターのルート・ターゲットを 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 をコピーします。ここではワークロードクラスター-kubeconfigと呼びます
- 最後に、ワークロード クラスターに vRouter をインストールします。
kubectl apply -f manifests/distributed_cluster_vrouter_example.yaml
数分後、すべてのポッドが稼働していることを確認します。
kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS cert-manager cert-manager-7d6d9465db-mgbk4 1/1 Running 0 cert-manager cert-manager-cainjector-6f567667c6-vm4 1/1 Running 0 cert-manager cert-manager-webhook-f947d7c68-tlfx8 1/1 Running 0 contrail-deploy contrail-k8s-deployer-6c88f6798f-jjx96 1/1 Running 3 contrail contrail-vrouter-masters-phttx 3/3 Running 0 contrail contrail-vrouter-nodes-xkkk8 3/3 Running 0 kube-system coredns-657959df74-26jrk 1/1 Running 0 kube-system dns-autoscaler-b5c786945-m4vtz 1/1 Running 0 kube-system kube-apiserver-k8s-cp0 1/1 Running 0 kube-system kube-controller-manager-k8s-cp0 1/1 Running 0 kube-system kube-proxy-5rbp4 1/1 Running 0 kube-system kube-proxy-kr95n 1/1 Running 0 kube-system kube-scheduler-k8s-cp0 1/1 Running 0 kube-system nginx-proxy-k8s-worker0 1/1 Running 0
ワークロード クラスターの分離
- 中央クラスタで、関連する 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をアンインストールするには、リリース23.1の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をアンインストールするには、リリース23.1のCN2をアンインストールするの手順に従います。
- 中央クラスタのCN2をアンインストールします。
- リリース23.1の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
- リリース23.1のCN2をアンインストールするの手順に従って、中央クラスタでCN2をアンインストールします。