クラスタ内のPodは、インターネット、または仮想プライベートクラウド(VPC)にデプロイされたリソースにアクセスできます。これには、Elastic Compute Service(ECS)インスタンスやServer Load Balancer(SLB)インスタンスなどの既存のリソース、ApsaraDB RDSやObject Storage Service(OSS)などのクラウドサービス、およびクラスタによって公開されているLoadBalancerサービスが含まれます。このトピックでは、Podが外部ネットワークにアクセスできるように送信元と送信先を構成する方法について説明します。
送信元の構成
ドメイン名解決の構成
Podが外部ネットワークにアクセスする場合、Podはクラスタによって提供されるドメイン名解決機能を使用して宛先アドレスを解決します。次に、PodはPodネットワーク経由で宛先にアクセスします。ドメイン名を解決できない場合は、DNS解決エラーのトラブルシューティングを行う必要があります。
ネットワークポリシーの構成
Podが属する名前空間にネットワークポリシーが構成されているかどうかを確認し、ネットワークポリシーによってPodが宛先にアクセスできないかどうかを確認します。上記のネットワークポリシーが存在する場合は、ポリシーを変更します。詳細については、ACSクラスタでのネットワークポリシーの使用を参照してください。
セキュリティグループの構成
クラスタのセキュリティグループと、PodをホストするECSインスタンスのセキュリティグループによって、Podが宛先にアクセスできないかどうかを確認します。セキュリティグループが以下の要件を満たしていることを確認してください。
Podが送信方向で宛先アドレスとポートにアクセスできるように、セキュリティグループルールが作成されています。
Podが送信方向で宛先アドレスとポートにアクセスすることを禁止するセキュリティグループルールは作成されていません。
宛先の構成
クラスタ内のPodは、インターネット、またはVPCにデプロイされたリソースにアクセスできます。これには、ECSインスタンスやSLBインスタンスなどの既存のリソース、ApsaraDB RDSやOSSなどのクラウドサービス、およびクラスタによって公開されているLoadBalancerサービスが含まれます。Podの構成は、宛先によって異なります。
インターネットへのアクセス
PodがプライベートIPアドレスを使用する場合、PodはパブリックIPv4アドレスにアクセスできます。Podは、Elastic IPアドレス(EIP)またはNATゲートウェイを使用する必要があります。次の表に、パブリックIPv4アドレスにアクセスするようにPodを構成するために使用できる方法を示します。
方法 | ゲートウェイとEIPの構成 | 外部ネットワークへのアクセスに使用されるパブリックIPアドレス |
NATゲートウェイを使用する | EIPをクラスタに関連付けます。詳細については、ACSクラスタのインターネットアクセスを有効にするを参照してください。 | NATゲートウェイに関連付けられたEIP。 |
Podに関連付けられたEIPを使用する(Terwayを使用する場合のみ) | EIPをPodに関連付けます。詳細については、Podに専用のEIPを関連付けるを参照してください。 | Podに関連付けられたEIP。 |
ECSインスタンスやSLBインスタンスなどの既存のリソースへのアクセス
PodがECSインスタンスまたはSLBインスタンスにアクセスする場合、インスタンスのセキュリティグループルールまたはアクセス制御リスト(ACL)ルールによって、ECSインスタンスまたはSLBインスタンスへのアクセスがブロックされる場合があります。Podによって使用される送信元IPアドレスがブロックされている場合は、送信元IPアドレスのブロックを解除する必要があります。Terwayモードでは、Pod IPアドレスが使用されます。Pod vSwitchのCIDRブロックからのアクセスを受け入れるように、セキュリティグループルールまたはACLルールを変更する必要があります。
ApsaraDB RDSやOSSなどのクラウドサービスへのアクセス
特定のクラウドサービスにアクセスするには、送信元IPアドレスをクラウドサービスのホワイトリストに追加する必要があります。Terwayモードでは、アクセスするクラウドサービスのホワイトリストにPod vSwitchのCIDRブロックを追加します。
ack-kubernetes-webhook-injectorを使用してホワイトリストを自動的に構成することもできます。詳細については、Alibaba CloudサービスのPodホワイトリストを動的に構成するを参照してください。
クラスタによって公開されているLoadBalancerサービスへのアクセス
サービスのアドレスがパブリックかプライベートかに関係なく、クラスタ内からクラスタによって公開されているLoadBalancerサービスへのアクセスはブロックされます。この問題を解決するには、アクセスするサービスの外部トラフィックポリシーを変更する必要があります。詳細については、LoadBalancerサービスによって公開されたSLBインスタンスのIPアドレスにクラスタがアクセスできない場合の対処方法を参照してください。