Container Service for Kubernetes (ACK) は、cloud controller manager (CCM) を使用して、クラスターがデプロイされている仮想プライベートクラウド (VPC) のルートテーブルにルートを追加します。これにより、クラスター内のポッド間のネットワーク接続が可能になります。 cloud-config ConfigMap を更新して、ACK クラスターがデプロイされている VPC の複数のルートテーブルを構成できます。このトピックでは、ACK クラスターがデプロイされている VPC の複数のルートテーブルを構成する方法について説明します。
前提条件
Flannel をネットワークプラグインとして使用して ACK クラスターが作成されており、cloud-controller-manager コンポーネントがバージョン要件を満たしている必要があります。
ACK マネージドクラスター:
Kubernetes ≥ 1.18
cloud-controller-manager ≥ v2.4.0
ACK 専用クラスター:
cloud-controller-manager ≥ v1.9.3.105-gfd4e547-aliyun
必要に応じて、クラスターを手動でアップグレードします。コンポーネントを確認または更新するには、「Cloud Controller Manager」をご参照ください。
クラスターが存在する VPC に複数のルートテーブルがある。
説明VPC にルートテーブルが 1 つしかない場合は、VPC の複数のルートテーブルを構成する必要はありません。
背景情報
VPC に複数のルートテーブルが構成されている場合、Elastic Compute Service (ECS) インスタンスを異なるルートテーブルに関連付けることができます。以前のバージョンの CCM では、VPC ごとに 1 つのルートテーブルしか構成できませんでした。そのため、ACK コンソールで CCM を最新バージョンに更新する必要があります。 CCM バージョンの更新方法の詳細については、「コンポーネントの管理」をご参照ください。
ACK マネージドクラスターがデプロイされている VPC の複数のルートテーブルを構成する
ACK マネージドクラスターがデプロイされている VPC の複数のルートテーブルは、ACK コンソールで構成できます。
ルートテーブルの ID を取得します。
VPC コンソール にログインします。左側のナビゲーションウィンドウで、[ルートテーブル] をクリックします。
[ルートテーブル] ページで、検索条件を [VPC ID] に設定し、クラスターが存在する VPC の ID を入力して、検索アイコンをクリックします。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[アドオン] ページで、CCM を見つけて [構成] をクリックします。
[routeTableIDs] フィールドに、手順 1 で取得したルートテーブル ID を入力し、[OK] をクリックします。
VPC の システムルートテーブル の ID を入力し、ルートテーブル ID をコンマ (,) で区切る必要があります。例: vtb-t4n788888****,vtb-t4n7k6u3m0n840799***.
ACK 専用クラスターがデプロイされている VPC の複数のルートテーブルを構成する
ACK 専用クラスターがデプロイされている VPC の複数のルートテーブルは、ACK コンソールまたは kubectl を使用して構成できます。
kubectl を使用する
kubectl クライアントを使用して VPC の複数のルートテーブルを構成するには、kubectl クライアントが ACK 専用クラスターに接続されていることを確認してください。詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」をご参照ください。
cloud-config ConfigMap を更新します。
kubectl edit cm -n kube-system cloud-config
コマンドを実行して、cloud-config ConfigMap を変更します。${ROUTE_TABLES_IDS}
を VPC 内のルートテーブルの ID に置き換えます。システムルートテーブルの ID が含まれていることを確認してください。複数のルートテーブル ID はコンマ (,) で区切ります。例: vtb-t4n788888****,vtb-t4n7k6u3m0n840799****。重要${ROUTE_TABLES_IDS}
cloud-config ConfigMap 内の のみ変更する必要があります。"routeTableIDs": "${ROUTE_TABLES_IDS}"
次のコマンドを実行して、CCM を実行しているポッドを再起動します。
kubectl -n kube-system delete po -lapp=cloud-controller-manager
ポッドが再起動されると、クラスターノードのルートが指定されたルートテーブルに表示されます。
ACK コンソールを使用する
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、変更するクラスターの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
kube-system 名前空間を選択します。 cloud-config ConfigMap を見つけて、[アクション] 列の [YAML の編集] をクリックします。
[YAML で表示] パネルで、routeTableIDs を VPC 内のルートテーブルの ID に設定します。システムルートテーブルの ID が含まれていることを確認してください。複数のルートテーブル ID はコンマ (,) で区切ります。例: vtb-t4n788888****,vtb-t4n7k6u3m0n840799****。次に、[OK] をクリックします。
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
kube-system 名前空間を選択します。 cloud-controller-manager DaemonSet を見つけて、ページの下部にある [一括再デプロイ] をクリックします。
再デプロイが完了すると、クラスターノードのルートが指定されたルートテーブルに表示されます。