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