我在Google Cloud Platform上的同一个VPC上运行Kubernetes群集和HA redis VM。子网10.128.0.0/20上允许所有TCP和UDP端口上的ICMP和流量。 Kubernetes有自己的内部网络,10.12.0.0 / 14,但集群运行在10.128.0.0/20内的VM上,与redis VM相同。
但是,即使10.128.0.0/20内的虚拟机相互看到,我也无法在运行来自Kubernetes pod的命令时ping同一个虚拟机或连接到其端口。我需要在k8s或GCP防火墙规则中进行修改以允许这样做 - 我觉得这应该是开箱即用的,并且pod可以访问其节点运行的同一网络?
kube-dns启动并运行,这个k8在GCP上为1.9.4。
答案 0 :(得分:2)
我尝试使用相同的配置重现您的问题,但它运行正常。我创建了一个名为“myservernetwork1”的网络,子网为10.128.0.0/20。我在这个子网中启动了一个集群,并创建了3个防火墙规则,允许在网络中使用icmp,tcp和udp流量。
$ gcloud compute firewall-rules list --filter="myservernetwork1"
myservernetwork1-icmp myservernetwork1 INGRESS 1000 icmp
myservernetwork1-tcp myservernetwork1 INGRESS 1000 tcp
myservernetwork1-udp myservernetwork1 INGRESS 1000 udp
我允许网络内的所有TCP,UDP和ICMP流量。 我使用以下命令为我的子网创建了icmp协议规则:
gcloud compute firewall-rules create myservernetwork1-icmp \
--allow icmp \
--network myservernetwork1 \
--source-ranges 10.0.0.0/8
我使用过/ 8掩码,因为我想覆盖网络中的所有地址。检查您的GCP防火墙设置以确保它们是正确的。