子网防火墙过滤器是否允许从 Kubernetes pod 访问?

子网防火墙过滤器是否允许从 Kubernetes pod 访问?

10.128.0.0/20我有一个位于 IP 为 的内部子网上的实例10.128.0.53

我有一个 kubernetes 服务定义为:

mysql           ExternalName   <none>         10.128.0.53   3306/TCP       151d

但奇怪的是,如果我将防火墙规则设置为仅允许10.128.0.0/2010.128.0.0/9仅允许实例(位于 10.128.0.53),它将无法连接。就好像 k8s 服务通过其他方式(NAT?)访问子网一样?

我应该应用什么防火墙规则来允许访问?我不想拥有它 0.0.0.0/0作为源头 — — 就像它现在的样子。


当防火墙规则为时0.0.0.0/0,tshark 转储为:

chris@mysql8-book-1-vm:~$ sudo tshark -f "tcp port 3306" -i any
Running as user "root" and group "root". This could be dangerous.
Capturing on 'any'
    1 0.000000000  10.4.12.160 → 10.128.0.53  TCP 76 51818 → 3306 [SYN] Seq=0 Win=28400 Len=0 MSS=1420 SACK_PERM=1 TSval=2402747230 TSecr=0 WS=128
    2 0.000055238  10.128.0.53 → 10.4.12.160  TCP 76 3306 → 51818 [SYN, ACK] Seq=0 Ack=1 Win=28160 Len=0 MSS=1420 SACK_PERM=1 TSval=257905306 TSecr=2402747230 WS=128
    3 0.001203683  10.4.12.160 → 10.128.0.53  TCP 68 51818 → 3306 [ACK] Seq=1 Ack=1 Win=28416 Len=0 TSval=2402747232 TSecr=257905306
    4 0.001685970  10.128.0.53 → 10.4.12.160  MySQL 146 Server Greeting proto=10 version=8.0.16
    5 0.002183066  10.4.12.160 → 10.128.0.53  TCP 68 51818 → 3306 [ACK] Seq=1 Ack=79 Win=28416 Len=0 TSval=2402747233 TSecr=257905307
    6 10.006731817  10.128.0.53 → 10.4.12.160  TCP 68 3306 → 51818 [FIN, ACK] Seq=79 Ack=1 Win=28160 Len=0 TSval=257907808 TSecr=2402747233
    7 10.050067244  10.4.12.160 → 10.128.0.53  TCP 68 51818 → 3306 [ACK] Seq=1 Ack=80 Win=28416 Len=0 TSval=2402757279 TSecr=257907808
    ```

答案1

如果我理解正确的话,您正在运行一个 GKE 服务,并且您希望其中的其他实例10.128.0.0/20访问您的服务。

通过 FW 规则实现它的一种方法是创建一个入口规则,其源范围10.128.0.0/20和目标标记 GKE 节点网络标记或 GKE 使用的目标服务帐户,指定端口和协议(在您的情况下为TCP 3306)。

相关内容