跳转至

Service底层的iptables链

iptables 链

iptables 链功能

当在 Kubernetes 中创建 Service 时,将会创建以下几个 iptables 链

这些链都是用于实现 Service 的核心功能

  • PREROUTING

此链是由 kube-proxy 组件创建的,用于将 Service IP 地址映射到对应的 Pod IP 地址上
当请求进入节点时,该链将被触发,它根据请求的 Service IP 地址来查找对应的 Pod IP 地址,并将请求转发到该 Pod |

  • KUBE-SERVICES

此链包含了一系列规则,用于将 Service IP 地址映射到对应的 Pod IP 地址上

当请求进入节点时,该链将被触发,并根据请求的 Service IP 地址来查找对应的 Pod IP 地址

如果找到了对应的 Pod IP 地址,请求将被转发到该 Pod

  • KUBE-SVC-XXX

此链包含了一系列规则,其中 XXX 代表 Service 的名称

每个 Service 都有一个对应的 KUBE-SVC-XXX 链

当请求进入节点时,该链将被触发,并根据 Service IP 地址查找对应的 KUBE-SVC-XXX 链

该链中的规则将请求转发到对应的 Pod

  • KUBE-SEP-XXX

此链包含了一系列规则,其中 XXX 代表 Service 的名称

每个 Service 都有一个对应的 KUBE-SEP-XXX 链

当请求进入节点时,该链将被触发,并根据 Service IP 地址查找对应的 KUBE-SEP-XXX 链

该链中的规则将请求转发到对应的 Pod

  • KUBE-FIREWALL

此链用于处理来自 Kubernetes 的内部流量。该链包含了一些规则,用于控制访问 Kubernetes 的 API、DNS 和其他一些服务

  • KUBE-NODEPORT

当 Service 类型为 NodePort 时,此链将被创建。该链包含了一些规则,用于将节点的端口映射到 Service 的端口上

  • KUBE-MARK-DROP

当请求被拒绝时,会触发此链。该链包含了一些规则,用于标记被拒绝的数据包

分析实例