【问题标题】:Kubernetes kube-proxy iptables rules seem to be redundantKubernetes kube-proxy iptables 规则似乎是多余的
【发布时间】:2019-07-21 12:03:15
【问题描述】:

上下文

kubeadm initkube-proxy 生成的iptables 规则中可能存在不必要的冗余:

iptables -t filter -S

输出:

-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N KUBE-EXTERNAL-SERVICES
-N KUBE-FIREWALL
-N KUBE-FORWARD
-N KUBE-SERVICES
-A INPUT -m conntrack --ctstate NEW -m comment --comment "kubernetes externally-visible service portals" -j KUBE-EXTERNAL-SERVICES
-A INPUT -j KUBE-FIREWALL
-A FORWARD -m comment --comment "kubernetes forwarding rules" -j KUBE-FORWARD
-A FORWARD -s 10.244.0.0/16 -j ACCEPT
-A FORWARD -d 10.244.0.0/16 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
-A OUTPUT -j KUBE-FIREWALL
-A KUBE-FIREWALL -m comment --comment "kubernetes firewall for dropping marked packets" -m mark --mark 0x8000/0x8000 -j DROP
-A KUBE-FORWARD -m comment --comment "kubernetes forwarding rules" -m mark --mark 0x4000/0x4000 -j ACCEPT
-A KUBE-FORWARD -s 10.244.0.0/16 -m comment --comment "kubernetes forwarding conntrack pod source rule" -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A KUBE-FORWARD -d 10.244.0.0/16 -m comment --comment "kubernetes forwarding conntrack pod destination rule" -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

10.244.0.0/16 范围对应于 pod 覆盖网络。

让我们关注FORWARD 链。

-P FORWARD DROP
-N KUBE-FORWARD
-A FORWARD -m comment --comment "kubernetes forwarding rules" -j KUBE-FORWARD
-A FORWARD -s 10.244.0.0/16 -j ACCEPT
-A FORWARD -d 10.244.0.0/16 -j ACCEPT
-A KUBE-FORWARD -m comment --comment "kubernetes forwarding rules" -m mark --mark 0x4000/0x4000 -j ACCEPT
-A KUBE-FORWARD -s 10.244.0.0/16 -m comment --comment "kubernetes forwarding conntrack pod source rule" -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A KUBE-FORWARD -d 10.244.0.0/16 -m comment --comment "kubernetes forwarding conntrack pod destination rule" -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

问题:

为什么KUBE-FORWARD 接受覆盖网络内的包,当它们的连接状态是RELATEDESTABLISHED 如果FORWARD 链将接受覆盖网络内的所有数据包流量,而不管它们的连接状态?

注意:

kubernetes 集群运行良好。

【问题讨论】:

    标签: kubernetes iptables


    【解决方案1】:

    这种重复是存在的,因为默认的 FORWARD 策略可能由于某种原因被禁用,并且 Kubernetes 仍然希望转发以下数据包:

    1. 标有“masqueradeMark”(可以开始新连接)
    2. 是已建立连接的一部分

    可以尝试阅读k8s源码中的cmets:https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/iptables/proxier.go#L1325

    一般来说,当 iptables 规则被自动管理时,应该会出现一些重复。它使自动化编码变得更容易。

    【讨论】:

      猜你喜欢
      • 2015-05-22
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 2021-05-07
      相关资源
      最近更新 更多