デフォルトでは、Terway クラスター内のすべてのノードが、eni-config ConfigMap(名前空間:kube-system)で定義されたネットワーク構成を共有します。特定のノードに異なる vSwitch またはセキュリティグループを割り当てるには、専用の ConfigMap を作成し、対象ノードにその ConfigMap を参照するラベルを付与します。Terway は、JSON Merge Patch(RFC 7396)を用いて、この新しい構成をデフォルト構成にマージします。
適用範囲
以下のケースで、ノード単位のネットワーク設定を構成します。
-
egress IP の隔離:特定の Pod にクラスター全体とは分離された専用 NAT IP アドレスまたは帯域幅制限を割り当てる必要があります。
前提条件
開始する前に、以下を確認してください。
-
ノードに割り当てる予定の vSwitch。詳細については、「vSwitch の作成と管理」をご参照ください。
-
ノードに割り当てる予定のセキュリティグループ。詳細については、「セキュリティグループの作成」をご参照ください。
考慮事項
-
既存の Elastic Network Interface(ENI)は自動更新されません。 新しい ConfigMap をノードに適用しても、設定が有効化された後に作成された ENI のみが新しい vSwitch およびセキュリティグループを使用します。既存の ENI は、引き続き元の設定を使用します。可能な限り、新規ノードに対してノード単位のネットワーク設定を適用してください。
-
vSwitch はノードと同じゾーン内にある必要があります。 vSwitch がノードとは異なるゾーンにある場合、設定は無効です。
-
セキュリティグループの割り当て上限。 1 つの ENI には最大 5 つのセキュリティグループを割り当てることができます。すべてのセキュリティグループは同一 VPC 内に存在し、かつ同一タイプである必要があります。詳細については、「ENI への複数のセキュリティグループの関連付け」をご参照ください。
ノード単位のネットワーク設定の構成
本プロシージャは、以下の 3 つのステップで構成されます:ネットワーク設定を定義する ConfigMap の作成、その ConfigMap を使用する対象ノードへのラベル付与、および新規 ENI が正しい設定を使用しているかの検証です。
ステップ 1:ConfigMap の作成
foo という名前の ConfigMap を、kube-system 名前空間内に作成します。この ConfigMap は、ラベル付きノードに適用される vSwitch およびセキュリティグループを定義します。
-
ACK コンソールにログインします。左側ナビゲーションウィンドウで、[クラスター] をクリックします。
-
[クラスター] ページで、対象のクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[設定] > [ConfigMap] を選択します。
-
「ConfigMap」ページで、[Namespace] のドロップダウンリストから [kube-system] を選択し、右上隅の [作成] をクリックします。
-
[作成]パネルで、[ConfigMap 名]を[foo]に設定します。[追加]をクリックし、[名前]を[eni_conf]に設定して、[値]フィールドに次の JSON を入力します。
vswitchesおよびsecurity_groupの値を実際の ID に置き換えます。{ "vswitches": { "cn-hangzhou-g": [ "vsw-10000" ], "cn-hangzhou-i": [ "vsw-10001" ] }, "security_group": "sg-10000", "security_groups": [ "sg-10000", "sg-10001" ] }パラメーター 説明 vswitchesゾーン ID と vSwitch ID のリストをマップしたオブジェクトです。各 vSwitch は対象ノードと同じゾーン内に存在する必要があります。ゾーン ID および vSwitch ID を確認するには、VPC コンソール にアクセスし、左側ナビゲーションウィンドウから [vSwitch] をクリックします。 security_group単一のセキュリティグループを割り当てる場合は、このパラメーターを設定し、 [security_groups]を null のままにします。security_groups1 つ以上のセキュリティグループを割り当てる場合は、このパラメーターを設定し、 [security_group]を null のままにします。システムは、両方のパラメーターに記載されたすべてのセキュリティグループを適用します。 -
[OK] をクリックします。
ステップ 2:ノードへのラベル付与
この ConfigMap を使用するノードに、terway-config=foo というラベルを付与します。
既存のノードの場合:
-
クラスター詳細ページの左側ナビゲーションウィンドウで、[ノード] > [ノード] の順に選択します。右上隅の [ラベルとテイントの管理] をクリックします。
-
[ラベル] タブで、対象のノードを選択し、[ラベルの追加] をクリックします。
-
[追加] ダイアログボックスで、[名前] を terway-config に、[値] を foo に設定し、[OK] をクリックします。
-
変更を反映させるために、Terway Pod を再起動します。
-
左側ナビゲーションウィンドウで、[ワークロード] > [Pod] の順に選択します。
-
[名前空間] のドロップダウンリストから [kube-system] を選択し、
[terway-eniip]を検索して該当するすべての Pod を選択し、[一括削除] をクリックします。 -
確認ダイアログボックスで、[OK] をクリックします。Kubernetes により Terway Pod が自動的に再作成されます。
-
名前が
terway-eniipで始まるすべての Pod の [ステータス] 列に [実行中] が表示されるまで待機します。Pod が実行されると、新しい vSwitch とセキュリティグループが有効になります。
-
新規ノードの場合:
ノードプールを作成する際に、[キー] に [terway-config]、[値] に [foo] を指定したラベルを追加します。詳細については、「ノードプールの作成」トピックの「ノードプールの作成」セクションをご参照ください。
ステップ 3:設定の検証
Terway Pod の再起動後、新規 ENI が正しい vSwitch およびセキュリティグループを使用していることを検証します。
-
ECS コンソールにログインします。左側ナビゲーションウィンドウで、[インスタンスとイメージ] > [インスタンス] の順に選択します。
-
対象 ECS インスタンスの名前をクリックします。インスタンス詳細ページで、[ENI] タブをクリックします。
-
Pod の IP アドレスを割り当てるために使用される ENI が、ConfigMap で指定した vSwitch およびセキュリティグループに関連付けられていることを確認します。
新規作成された Pod の IP アドレスが想定される vSwitch CIDR ブロック内に含まれていない場合は、「コンテナネットワークに関するよくある質問」をご参照ください。