K8S的 Pod 默认网络 "允许所有"
Pod 被 NetworkPolicy 对象选中,就会进入黑洞,无法对外访问 无法接收请求。
注意: K8S的CNI插件支持NetworkPolicy对象,才可在集群中使用
黑洞开窗 : 设置白名单 policyTypes字段

一   NetworkPolicy 工作原理

     支持NetworkPolicy对象的CNI插件,都维护着一个 NetworkPolicy 控制器。
     控制器通过控制循环对 集群中的networkpolicy对象做响应 (在宿主机上完成对应的iptables rules配置)
    Calico Weave  kube-router 支持NetworkPolicy对象
    Flannel  不支持(需calico互补)

二    policyTypes字段

(1)ingress :流入 
        from :白名单
        ports : 端口白名单
(2)egress  :流出
        to : 白名单
        ports :端口白名单 
(3)podSelector : 若为空,表示NetworkPolicy所在namespace下所有pod都进入黑洞。只有符合白名单才能有流量走动。


上述yaml解说:
(1) NetworkPolicy 选中 携带了role=db 的pod ,拉入黑洞
(2)黑洞开窗 : 针对流入请求
(2.1)源地址属于172.17.0.0/16 但是不属于 172.17.1.0/24 的流入请求  +  请求的端口是6379 + 请求协议是tcp
(2.2)此api对象所在namespace是default,default namespace下携带project = myproject 标签的pod +  请求的端口是6379 + 请求协议是tcp
(2.3)任意namespace下携带 role=frontend 标签的pod +  请求的端口是6379 + 请求协议是tcp
(3)黑洞开窗 : 针对流出请求
目标地址是10.0.0.0/24 + 请求协议是tcp + 请求端口是5978 

更多推荐