从Pod调用集群外的应用程序

时间:2020-09-26 16:00:50

标签: gke-networking

在同一网络中的Compute Engine和GKE群集上运行着一个Web服务应用。

集群中的Pod是否可以使用Web服务应用程序的内部IP地址来调用Web服务应用程序?

您的回答将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

TL; DR

是的。

假设您正在谈论VM的内部IP地址,则需要创建一条规则,允许从pod address rangeVM的流量。


示例

假设:

  • 有一个名为Compute Engine的{​​{1}}实例,它被配置为在端口nginx上运行。
  • 与您的80实例在同一网络中有一个Kubernetes Engine

您将需要检查GCE集群的pod ip地址范围。您可以通过以下任一方式来做到这一点:

  • GKE(网络用户界面)
  • Cloud Console

可以通过以下任一方式创建防火墙规则:

  • $ gcloud container clusters describe CLUSTER-NAME --zone=ZONE | grep -i "clusterIpv4Cidr"(网络用户界面)
  • Cloud Console命令,如下所示:
gcloud

免责声明!

  1. 在上一个命令(描述集群)中输入值gcloud compute --project=PROJECT-ID firewall-rules create pod-to-vm \ --direction=INGRESS --priority=1000 --network=default \ --action=ALLOW --rules=tcp:80 --source-ranges=clusterIpv4Cidr \ --target-tags=pod-traffic
  2. 您需要将clusterIpv4Cidr添加到您的pod-traffic网络标签中!

之后,您可以生成一个Pod,并检查是否可以与VM's通信:

  • VM
  • $ kubectl run -it ubuntu --image=ubuntu -- /bin/bash

您可以通过以下任一方式与$ apt update && apt install -y curl dnsutils的{​​{1}}窗格进行通信:

  • 您的VM的IP地址:
GKE
  • 您的VMroot@ubuntu:/# curl IP_ADDRESS REDACTED <p><em>Thank you for using nginx.</em></p> REDACTED )的名称:
VM

您还可以通过运行以下命令来检查名称是否正确解析:

nginx

其他资源: