|NO.Z.00410|——————————|CloudNative|——|KuberNetes&NetworkPolicy.V02|——|NetworkPolicy.v02|配置详解.v02|
一、NetworkPolicy配置文件注释
### --- NetworkPolicy配置文件注释
~~~ 配置在default命名空间下;匹配的标签是role等于db
~~~ 隔离default命名空间下具有role等于db的这些标签的pod
~~~ 又配置了一些ingress和egress的策略
~~~ # ingress下:IPblock:允许IP地址范围为:
~~~ 172.187.0.0/16网络的IP可以访问role等于db的这些pod;
~~~ 当然要排除掉:172.17.1.0/24这个网段的
~~~ 同时也允许命名空间project等于myproject这个标签的
~~~ 命名空间下所有的pod可以访问role等于db的容器
~~~ # 最后又匹配了一个podselector:
~~~ 也就是和这个网络策略在同一命名空间下的符合role等于Frontend的这个pod去访问role等于db的这个容器;
~~~ 限制只能访问容器的6379端口
~~~ 最后限制了role等于db这个容器的出口;
~~~ 只能访问default命名空间下符合role等于db的这些pod
~~~ 只能访问网段在10.0.0.0/24网段且端口号是5978的服务;
~~~ 若是出口不符合这2个策略才可以访问
二、NetworkPolicy配置详解注释二
~~~ # podSelector:
~~~ 表示该策略对哪些Pod生效。示例中配置的是role=db,
~~~ 代表该策略应用于该NetworkPolicy所在的Namespace(NetworkPolicy具有Namespace隔离性)
~~~ 下符合role=db的Pod上。如果该选项为空,则对该Namespace下所有的Pod生效。
### --- 和其它资源一样,NetworkPolicy也需要apiVersion、kind和metadata字段,
~~~ 配置方法和其它资源类似,对于NetworkPolicy的策略配置,
~~~ 从Spec开始,下面对每个字段进行讲解:
~~~ # policyTypes:
~~~ 网络策略的类型。目前网络策略支持入站(Ingress)和出站(Egress)的规则配置,
~~~ 出站代表符合podSelector规则的Pod的出口流量限制,
~~~ 入站是其它Pod对符合podSelector规则的Pod的访问流量限制。
~~~ 如果未指定policyTypes,则默认为Ingress,如果未指定policyTypes,
~~~ 且有出口规则的话,也会配置Egress。
~~~ # ingress:
~~~ 如policyTypes所述,Ingress是对入口流量的管控。
~~~ 每个NetworkPolicy可以包含一个Ingress白名单列表,
~~~ 每个规则都允许匹配from和ports部分的流量。
~~~ 其中from表示访问来源,可以配置为ipBlock、namespaceSelector、podSelector,
~~~ 如果此项为空则表示匹配所有来源。
~~~ 另外一个ports表示可被访问的端口列表,如果此项为空则表示匹配所有端口。
~~~ # egress:
~~~ 如policyTypes所述,Egress是对出口流量的管控。
~~~ 同样,NetworkPolicy可以包含一个Egress白名单列表,
~~~ 不同的是Egress的可配置参数为to和ports。
~~~ 其中ports表示可以访问的目标端口,to表示可以访问的目的,
~~~ 也可以配置为ipBlock、namespaceSelector、podSelector。
~~~ # namespaceSelector:
~~~ 匹配具有指定标签的Namespace下的所有Pod。
~~~ 当前示例的ingress的from参数配置了namespaceSelector,
~~~ 表示匹配具有project=myproject标签的Namespace下的所有Pod。
~~~ # ipBlock:
~~~ 表示匹配的IP块,可以是单个IP,也可以是网段,同时也支持IPV6格式。
~~~ Except为可选参数,表示从IPBlock排除一些地址。
### --- 根据上述的概念,就可以知道上面示例的含义如下:
~~~ 隔离default命名空间下具有role=db标签的Pod;
~~~ 允许IP地址范围为172.17.0.0–172.17.0.255 和 172.17.2.0–172.17.255.255
~~~ 访问default命名空间下具有role=db的Pod的6379且协议为TCP的端口;
~~~ 允许具有project=myproject的Namespace下的所有Pod
~~~ 访问default命名空间下具有role=db的Pod的6379且协议为TCP的端口;
~~~ 允许default命名空间(和NetworkPolicy同一命名空间)
~~~ 下具有role=frontend标签的Pod访问default命名空间下
~~~ 具有role=db的Pod的6379且协议为TCP的端口;
~~~ 允许带有role=db标签的Pod可以访问10.0.0.0/24网段下的5978且协议为TCP的端口
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」