【发布时间】:2020-09-30 16:56:47
【问题描述】:
在同一网络中的 Compute Engine 和 GKE 集群上运行了一个 Web 服务应用。
集群中的 pod 是否可以使用 Web 服务应用的内部 IP 地址调用 Web 服务应用?
您的回答将不胜感激。
谢谢。
【问题讨论】:
标签: gke-networking
在同一网络中的 Compute Engine 和 GKE 集群上运行了一个 Web 服务应用。
集群中的 pod 是否可以使用 Web 服务应用的内部 IP 地址调用 Web 服务应用?
您的回答将不胜感激。
谢谢。
【问题讨论】:
标签: gke-networking
TL;DR
是的,这是可能的。
假设您谈论的是 VM 的内部 IP 地址,您需要创建一个规则,允许从 pod address range 到您的 VM 的流量。
假设:
nginx 的Compute Engine 实例,它被配置为在端口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
免责声明!
- 输入上一条命令中的值(描述集群)代替
clusterIpv4Cidr- 您需要将
pod-traffic添加到您的VM's网络标签中!
之后,您可以生成一个 pod 并检查您是否可以与您的 VM 通信:
$ kubectl run -it ubuntu --image=ubuntu -- /bin/bash$ apt update && apt install -y curl dnsutils您可以通过以下任一方式与 VM 和 GKE pod 进行通信:
VM的IP地址: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
其他资源:
【讨论】: