我们有很多Nodeport设置的服务,可以通过外部服务器获得:。
我希望控制对某些服务的访问是一种常见的要求,这意味着来自某些IP的请求可能会访问它,而有些则不会。
我们想用它iptables来满足这个要求,因为kubernetes也使用它来建立通信,因此会引起很多困惑。我们是否有任何高级guidance设计/创建iptable规则来控制k8s服务?
具体来说,我在以下几个方面感到困惑:
我应该在哪个表中添加规则?我发现很多规则nat and filter都是由K8创建的
如果我什么停用的服务从一个外部IP某些节点的访问,比如 telnet : 我应该直接拒绝FORWARD或INPUT,或PREROUTING吗?
这些规则是否取决于特定的网络插件(例如flannel or weave)?不同的插件是否有不同的配置规则?
对于我的场景,我有以下规则要设置:
集群中的所有节点都full access应该相互拥有
某些核心服务(API)应仅由IP 接受certain
端口范围内的某些服务可以通过IP 接受all
拒绝any other所有IP(集群外)的服务访问
k8s版本:1.9.5网络插件:weave
虽然您可以更改K8s节点上的iptables,但我不建议进行任何更改,因为K8s(kube-proxy)会不断动态更改规则。换句话说,Kubernetes管理(与叠加层结合)为您管理iptables。
为了阻止流量,我强烈建议使用NetworkPolicies。如果您使用叠加层,则可以使用叠加层提供的内容。例如,Calico有自己的网络政策
控制流量输入/输出的另一种方法是使用像Istio这样的服务网格。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。