我正在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内部的VM可以互相看到,但在运行来自Kubernetes pod的命令时,我也无法ping通相同的VM或连接到其端口。为此,我需要在k8s或GCP防火墙规则中进行哪些修改-我印象很深,这应该可以立即使用,并且pod可以访问其节点运行所在的同一网络?
kube-dns已启动并正在运行,并且此g8s 1.9.4在GCP上。
最佳答案
我尝试用相同的配置重现您的问题,但是效果很好。我创建了一个名为“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协议(protocol)规则:
gcloud compute firewall-rules create myservernetwork1-icmp \
--allow icmp \
--network myservernetwork1 \
--source-ranges 10.0.0.0/8
我使用/ 8掩码是因为我想覆盖网络中的所有地址。检查您的GCP防火墙设置,以确保设置正确。