Nodeport设置了许多服务,可以通过<node_ip>:<node_port>
从外部获得这些服务。
我想控制对某些服务的访问应该是一个普遍的要求,这意味着某些IP的请求可以访问它,而其他IP则不能。
我们想使用iptables
来满足此要求,这会引起很多困惑,因为kubernetes也使用它来建立通信。
我们是否有任何高级guidance
来设计/创建iptable规则来控制k8s服务?
具体来说,我在以下方面感到困惑:
nat and filter
中的许多规则都是由K8s创建的。telnet <node_ip>:<node_port>
我应该在FORWARD
或INPUT
还是直接在PREROUTING
上拒绝?对于我的情况,我需要设置以下规则:
full access
certain
个IP地址接受 all
IP地址接受 any other
服务k8s版本:1.9.5 网络插件:编织
最好的问候!
/分类支持
答案 0 :(得分:2)
尽管您可以在K8s节点上更改iptables,但我不建议您进行任何更改,因为K8s(kube-proxy)一直在动态地更改规则。换句话说,Kubernetes为您管理(与覆盖图结合)为iptables。
要阻止流量,我强烈建议您使用NetworkPolicies。和/或,如果使用的是覆盖层,则可以使用该覆盖层提供的内容。例如,印花布有自己的Network Policy
控制流量进出的另一种方法是使用Istio之类的服务网格。