常见的参股了网络插件包含以下几种:
法兰绒:为Kubernetes提供叠加网络的网络插件,基于TUN/TAP隧道技术,使用UDP封装IP报文进行创建叠加网络,借助etcd维护网络的分配情况,缺点:无法支持网络策略访问控制。
棉布:基于边界网关协议的三层网络插件,也支持网络策略进而实现网络的访问控制;它在每台主机上都运行一个虚拟路由,利用Linux内核转发网络数据包,并借助iptables实现防火墙功能。实际上白布最后的实现就是将每台主机都变成了一台路由器,将各个网络进行连接起来,实现跨主机通信的功能。
运河:由法兰绒和棉布联合发布的一个统一网络插件,提供参股了网络插件,并支持网络策略实现。
其他的还包括编织网,Contiv, OpenContrail,和平,NSX-T, kube-router等等。而法兰绒和棉布是目前最流行的选择方案。
1。全部拒绝
<代码> apiVersion: networking.k8s.io/v1 :NetworkPolicy 元数据: 名称:deny-all-egress 名称空间:cs1 #应用于cs1名称空间,不写名称空间对违约应用 规范: podSelector: {} 入口: 出口: #定义出站规则,这里没有写任何策略,表示全部拒绝。 policyTypes: - - - - - -出口 - - - - - -进入 #这里面有出口就表示要定义出站规则,不写出口就是默认通行,入口是入站原理一样 #建议大家把两个都写上去然后使用“podSelector:“来控制是否能通行代码>
2。全部允许
<代码> apiVersion: networking.k8s.io/v1 :NetworkPolicy 元数据: 名称:allow-all-egress 名称空间:cs1 规范: podSelector: {} 入口: ——{} #这样表示“入口”方向的全部允许通行 出口: ——{} #这样表示“出口”方向的全部允许通行 policyTypes: - - - - - -出口 ——进入代码>
这个网络策略只对名称空间起效,宿主机依然可以访问
3。作用范围
<代码> apiVersion: networking.k8s.io/v1 :NetworkPolicy 元数据: 名称:拒绝所有 名称空间:默认 #只作用于默认名称空间 规范: podSelector: #匹配舱范围如果匹配该名称空间的所有pod输入“{}”即可 matchLabels: 访问:“真正的” #匹配舱中有访问=true的标签 policyTypes: - - - - - -进入 - - - - - -出口 入口: 出口:代码>