0

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

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

您的回答将不胜感激。

谢谢。

4

1 回答 1

0

TL;博士

是的,这是可能的。

假设您正在谈论您的内部 IP 地址,您VM将需要创建一个规则,允许从pod address range您的VM.


例子

假如说:

  • 有一个Compute Engine名为: 的实例nginx,它被配置为在 port 上运行80
  • 在与您的实例Kubernetes Engine相同的网络中有一个。GCE

您需要检查GKE集群的 pod ip 地址范围。您可以通过以下任一方式进行:

  • Cloud Console(网页界面)
  • $ gcloud container clusters describe CLUSTER-NAME --zone=ZONE | grep -i "clusterIpv4Cidr"

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

  • Cloud Console(网页界面)
  • gcloud命令如下:
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

免责声明!

  1. 输入上一个命令的值(描述集群)代替clusterIpv4Cidr
  2. 您将需要添加pod-traffic到您的VM's网络标签!

之后,您可以生成一个 pod 并检查您是否可以与您的VM:

  • $ kubectl run -it ubuntu --image=ubuntu -- /bin/bash
  • $ apt update && apt install -y curl dnsutils

您可以通过以下任一方式与您的VMwith GKEpod 进行通信:

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

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

root@ubuntu:/# nslookup nginx
Server:     DNS-SERVER-IP
Address:    DNS-SERVER-IP#53

Non-authoritative answer:
Name:   nginx.c.PROJECT_ID.internal
Address: IP_ADDRESS

其他资源:

于 2020-09-28T09:22:02.910 回答