在同一网络中的 Compute Engine 和 GKE 集群上运行了一个 Web 服务应用程序。
集群中的 pod 是否可以使用 Web 服务应用程序的内部 IP 地址调用 Web 服务应用程序?
您的回答将不胜感激。
谢谢。
在同一网络中的 Compute Engine 和 GKE 集群上运行了一个 Web 服务应用程序。
集群中的 pod 是否可以使用 Web 服务应用程序的内部 IP 地址调用 Web 服务应用程序?
您的回答将不胜感激。
谢谢。
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
免责声明!
- 输入上一个命令的值(描述集群)代替
clusterIpv4Cidr
- 您将需要添加
pod-traffic
到您的VM's
网络标签!
之后,您可以生成一个 pod 并检查您是否可以与您的VM
:
$ kubectl run -it ubuntu --image=ubuntu -- /bin/bash
$ apt update && apt install -y curl dnsutils
您可以通过以下任一方式与您的VM
with GKE
pod 进行通信:
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
其他资源: