Apo*_*tas 6 google-cloud-platform kubernetes google-kubernetes-engine
我在GKE中创建了一个新集群,版本为1.10.5-gke.0。我看到我的应用程序无法访问同一网络中的IP,基本上是实例在计算上运行。
我已经切换到Kubernetes节点之一,并且通过使用附带的工具箱,我可以ping这些IP地址,但是如果我尝试从在此集群上运行的容器中尝试,则无法这样做。
我看到,自1.10以来,google禁用了计算和存储的访问范围,即使启用了这些范围,我仍然会得到相同的结果。
我觉得有些困惑,因为它过去可以用于所有其他集群,而无需任何额外的配置
我在这里想念什么吗?
解决此问题的一种简单方法是使用 Google Cloud Console。
去
导航菜单 -> VPC 网络 -> 防火墙规则
.
通常在创建集群时,会自动创建一些带有特定前缀和后缀的规则。查看带有gke-前缀和-all后缀的规则表,例如 gke-[my_cluster_name]-all。您会注意到这条规则,它包含集群内 pod 的源范围,并且允许使用相当多的协议(tcp、udp、imp、esp 等)。
选择此规则并转到Edit。在目标下,选择下拉菜单并更改为网络中的所有实例。
或者,您可以选择指定的Specified target tags或Specified service account,在下面输入正确的值,例如您尝试访问的计算引擎的正确开发者服务帐户。
如果您使用的是 Kubernetes 版本 1.9.x 及更高版本,您也可以在此处查看另一种替代方式。故障排除
希望这一切都有帮助。
我也遇到了这个问题。我在默认网络上的虚拟机上运行 mongo,在默认网络上的新节点上重新创建 kubernetes 集群后,无法从 Pod 内部访问它。
添加此防火墙规则修复了问题:
NAME NETWORK DIRECTION PRIORITY SRC_RANGES DEST_RANGES ALLOW DENY SRC_TAGS SRC_SVC_ACCT TARGET_TAGS TARGET_SVC_ACCT
gke-seqr-cluster-dev-eb823c8e-all default INGRESS 1000 10.48.0.0/24 tcp,udp,icmp,esp,ah,sctp
Run Code Online (Sandbox Code Playgroud)
这里,10.48.0.0 子网基于 cbr0 网络(通过 ssh 进入 kubernetes 节点并运行来查找ip address
)
cbr0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1460 qdisc htb state UP group default qlen 1000
..
inet 10.48.0.1/24 scope global cbr0
valid_lft forever preferred_lft forever
..
Run Code Online (Sandbox Code Playgroud)
获取 10.48.0.1 IP 的另一种方法是在 Pod 内安装并运行 Traceroute:
traceroute <ip of node you're trying to reach>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1416 次 |
最近记录: |