kubernetes - 在Kubernetes节点上重启后删除iptables规则

标签 kubernetes iptables weave kube-proxy

手动添加一些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插件网络动态生成的所有INPUTFORWARDOUTPUT规则?

最佳答案

在任何系统上的上运行iptables都不是持久性操作,并且在重新启动时会被遗忘,k8s节点也不异常(exception)。我怀疑k8s在启动时会删除IPTABLES规则,因此您可以尝试以下操作:

  • 创建您的规则(根据需要从空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/

    相关文章:

    docker - 带有Weave的Docker远程API

    google-cloud-platform - 在Google Cloud执行个体上建立Kubernetes丛集时“403 Insufficient Permission”

    kubernetes - 使用安全上下文 fsgroup 选项对卷安装的写入权限

    python - 如何在等待外部服务器的post请求响应时绕过30秒的TTL

    windows - VMware 和 iptables

    Kubernetes Pod 在不同节点上无法找到彼此

    azure - 在 AKS 群集上公开非 HTTP 流量

    ruby - IPTables 和不同的 Redis 客户端的奇怪问题

    android - 限制对域的 Internet 访问

    docker - Docker-是否可以使用weave在同一主机中连接容器