我正在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防火墙设置,以确保设置正确。

09-10 22:20