如何通过 iptables 允许 kubernetes/calico 流量?

如何通过 iptables 允许 kubernetes/calico 流量?

我已经在主机上安装了 kubespray。我想关闭主机上除必需端口之外的所有端口。我想添加以下规则:

iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT
iptables -A INPUT -j DROP

但有一个问题。最后一条规则阻止了 Kubernetes 流量。此类流量的示例:

Sep 28 01:37:01 node1 kernel: [1034725.304114] Iptables: Drop close ip: IN=calif886a61144a OUT= MAC=ee:ee:ee:ee:ee:ee:52:e2:a2:07:10:34:08:00 SRC=10.233.102.148 DST=169.254.25.10 LEN=45 TOS=0x00 PREC=0x00 TTL=64 ID=25074 DF PROTO=UDP SPT=44106 DPT=53 LEN=25 MARK=0x40000
Sep 28 01:32:22 node1 kernel: [1034445.773838] Iptables: Drop close ip: IN=vxlan.calico OUT= MAC= SRC=10.233.102.128 DST=239.192.152.143 LEN=165 TOS=0x00 PREC=0x00 TTL=32 ID=60561 PROTO=UDP SPT=58704 DPT=6771 LEN=145
Sep 29 00:00:02 host1 kernel: [10232.158702] Ip6tables: Drop other: IN=enp9s0 OUT= MAC= SRC=2a01:04f9:003b:4714:0000:0000:0000:0002 DST=ff15:0000:0000:0000:0000:0000:efc0:988f LEN=187 TC=0 HOPLIMIT=32 FLOWLBL=553201 PROTO=UDP SPT=6771 DPT=6771 LEN=147

在 iptables 中也有由 kubernetes 创建的规则。但我考虑到了这一点,并在它们后面插入了自己的规则。结果发现 kubernetes 流量到达了 INPUT 链的末尾。

我可以使用哪些规则来允许所有 kubernetes 流量?如何正确执行?

答案1

有一种更简单的方法。考虑使用主机端点政策。

这里是一个教程,我已经为 k3s 集群做过类似的事情。

相关内容