構成は、ネットワークプラグイン(Terway または Flannel)、IP スタックタイプ、および送信先によって異なります。
前提条件
Pod が送信先に到達できない場合は、以下の 3 つの領域をまず確認してください。
DNS 解決
Pod はネットワークポリシーが適用される前に、クラスター DNS を通じて送信先のホスト名を解決します。解決に失敗した場合は、まずDNS エラーのトラブルシューティングを行ってください。
ネットワークポリシー
Pod の名前空間に設定された NetworkPolicy がアウトバウンドトラフィックをブロックしていないか確認してください。そのようなポリシーが存在する場合は、必要なトラフィックを許可するようにポリシーを更新します。詳細については、「ACK クラスターでのネットワークポリシーの使用」をご参照ください。
セキュリティグループ
セキュリティグループは、Pod をホストする Elastic Compute Service (ECS) インスタンスのノードレベルで適用されます。クラスターおよび ECS インスタンスの両方のセキュリティグループを確認してください。
-
アウトバウンドルールにより、Pod から送信先アドレスおよびポートへのトラフィックが許可されていること。
-
送信先アドレスおよびポートへのトラフィックをブロックするアウトバウンドルールが存在しないこと。
詳細については、「クラスターのセキュリティグループを設定する」をご参照ください。
インターネットへのアクセス
IPv4 シングルスタッククラスター
IPv4 シングルスタッククラスター内の Pod はプライベート IPv4 アドレスを使用し、パブリック IPv4 送信先にのみ到達できます。アウトバウンドアクセスを有効にするには、Pod に Elastic IP Address (EIP) を関連付けるか、NAT ゲートウェイを構成します。
構成方法はネットワークプラグインによって異なります。
| インターネットアクセス方法 | Terway | Flannel |
|---|---|---|
| NAT ゲートウェイ | SNAT ルールは Pod の IP アドレスをカバーしている必要があります。Pod のパブリック IP は NAT ゲートウェイの EIP になります。 | SNAT ルールはノードの IP アドレスをカバーしている必要があります。Pod のパブリック IP は NAT ゲートウェイの EIP になります。 |
| EIP | EIP を直接 Pod に関連付けます。詳細については、「Pod に専用 EIP を関連付ける」をご参照ください。 | Pod をホストしている ECS ノードに EIP を関連付けます。 Pod のパブリック IP はノードの EIP となります。 「EIP の関連付けと解除」をご参照ください。 |
いずれのプラグインでも NAT ゲートウェイを構成する方法については、「既存の ACK クラスターでインターネットへのアクセスを有効化する」をご参照ください。
デュアルスタッククラスター
デュアルスタック Pod はプライベート IPv4 アドレスとパブリック IPv6 アドレスを持ちますが、IPv6 はデフォルトでパブリック帯域幅を持ちません。IPv6 によるインターネットアクセスを有効にするには、「Pod に IPv6 インターネット帯域幅を割り当てる」をご参照ください。
VPC 内のリソースへのアクセス
Pod が Elastic Compute Service (ECS) インスタンス、Server Load Balancer (SLB) インスタンス、OSS バケット、ApsaraDB RDS データベースなどの Virtual Private Cloud (VPC) リソースにアクセスする場合、送信先で認識されるソース IP はネットワークプラグインによって異なります。
-
Terway:ソース IP は Pod の IP アドレスです。
-
Flannel:ソース IP は ECS ノードの IP アドレスです。
送信先に、セキュリティグループルール、アクセス制御リスト (ACL) ルール、IP ホワイトリストなど、ソース IP をブロックするアクセス制御ルールが設定されている場合は、適切な IP アドレスをホワイトリストに追加してください。
-
Terway クラスターの場合:Pod の IP アドレスを追加します。
-
Flannel クラスターの場合:ECS ノードの IP アドレスを追加します。
ack-kubernetes-webhook-injector を使用して、Alibaba Cloud サービス全体でホワイトリスト構成を自動化できます。詳細については、「Alibaba Cloud サービスの Pod ホワイトリストを動的に構成する」をご参照ください。
クラスター内での LoadBalancer サービスへのアクセス
Pod が同一クラスター内の LoadBalancer サービスのフロントエンドである SLB インスタンスにアクセスする場合、ACK はトラフィックを SLB インスタンスをバイパスしてバックエンド Pod に直接ルーティングします。
例外として、IPVLAN + eBPF モードで Terway 1.1.0 以前を実行しているクラスターでは、SLB インスタンスの IP を経由してトラフィックがルーティングされます。Terway 1.2.0 以降では、新規作成されたクラスターがクラスター内負荷分散をサポートしますが、アップグレードされたクラスターはサポートしません。
詳細については、「Terway IPVLAN モードでクラスター内負荷分散を有効化する方法」をご参照ください。