手动添加一些iptables规则并重新引导计算机后,所有规则都消失了(无论规则类型如何)。
例如
$ iptables -A FUGA-INPUT -p tcp --dport 23 -j DROP
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
KUBE-EXTERNAL-SERVICES all -- anywhere anywhere ctstate NEW /* kubernetes externally-visible service portals */
KUBE-FIREWALL all -- anywhere anywhere
DROP tcp -- anywhere anywhere tcp dpt:telnet
重新启动后:
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
KUBE-EXTERNAL-SERVICES all -- anywhere anywhere ctstate NEW /* kubernetes externally-visible service portals */
KUBE-FIREWALL all -- anywhere anywhere
如果我没记错的话,在每个节点上运行的
kube-proxy
会动态修改iptables
。如果那是正确的,我如何添加永久的规则,但仍然使kubernetes / kube-proxy发挥作用,而不删除Kubernetes和Weave插件网络动态生成的所有INPUT
,FORWARD
和OUTPUT
规则?
最佳答案
在任何系统上的上运行iptables
都不是持久性操作,并且在重新启动时会被遗忘,k8s节点也不异常(exception)。我怀疑k8s在启动时会删除IPTABLES规则,因此您可以尝试以下操作:iptables -A
命令执行此操作)iptables-save >/etc/my-iptables-rules
(注意,您也可以手动创建规则文件)。 /etc/rc.local
),然后向其中添加iptables-restore -n </etc/my-iptables-rules
。这将在重新启动时加载您的规则。请注意,如果您使用rc.local
,则在k8s启动之后,'iptables-restore'命令可能会很好地运行,请检查您的iptables -A
命令对k8s之后的加载不敏感;如果需要,将文件中的-A命令替换为-I(将命令首先放在表中)。
(请注意,某些操作系统安装可能还包含加载iptables的启动时服务;有些防火墙软件包会安装该服务-如果您的服务器上有一个,最好的方法是将规则添加到该防火墙的配置,而不是编写和加载自己的自定义配置)。
关于kubernetes - 在Kubernetes节点上重启后删除iptables规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51843941/