将 Kubernetes 集群连接到同一 GCP 网络上的 Redis

Connecting Kubernetes cluster to Redis on the the same GCP network

我是 运行 Kubernetes 集群和 Google 云平台上同一 VPC 上的 HA redis 虚拟机。子网 10.128.0.0/20 上允许所有 TCP 和 UDP 端口上的 ICMP 和流量。 Kubernetes 有自己的内部网络,10.12.0.0/14,但集群运行在 10.128.0.0/20 内部的虚拟机上,与 redis 虚拟机相同。

但是,即使 10.128.0.0/20 内的 VM 相互看到,我无法 ping 同一个 VM 或连接到它的端口,同时从 Kubernetes pod 命令 运行。我需要在 k8s 或 GCP 防火墙规则中修改什么以允许这样做 - 我的印象是这应该开箱即用并且 pods 将能够访问与其节点相同的网络 运行 上?

kube-dns 已经启动 运行,并且这个 k8s 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 流量。 我使用以下命令为 sub-net 创建了 icmp 协议规则:

gcloud compute firewall-rules create myservernetwork1-icmp \
  --allow icmp \
  --network myservernetwork1 \
  --source-ranges 10.0.0.0/8

我使用了 /8 掩码,因为我想覆盖我网络中的所有地址。检查您的 GCP 防火墙设置以确保它们正确无误。