一、背景
如果希望在OSI模型中第三层或第四层控制网络流量,则应该使用NetworkPolicy这个对象;NetworkPolicy以应用为中心,主要用来控制Pod网络流量的进入和流出
二、实例说明
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: network-policy-test
namespace: luoxianming
spec:
podSelector:
matchLabels:
app: web
policyTypes:
- Ingress
- Egress
ingress:
- from:
- ipBlock:
cidr: 172.17.0.0/16
except:
- 172.17.0.0/24
- namespaceSelector:
matchLabels:
project: luoxianming
- podSelector:
matchLabels:
app: web
ports:
- protocol: TCP
port: 8080
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/24
ports:
- protocol: TCP
port: 8080
三、参数解释
podSelector: 每个NetworkPolicy中都包括一个podSelector,表示一组Pod进行选择
policyTypes: 每个NetworkPolicy都包含一个policyTypes列表,其中包含Ingress或Egress或者两者兼有;表示对给定的Pod是控制Ingress还是Egress还是两者兼有
Ingress: Ingress白名单列表
egress: egress白名单列表
四、选择器
在Ingress或egress部分中,在from或to字段部分可以定义如下四种选择器:
podSelector: 选择特定Pod
namespaceSelector: 选择特定的名称空间,应将所有Pod用于入站流量或出站流量
ipBlock: 选择特定IP,这些IP应该是集群外部IP
namespaceSelecotr和PodSelecotr: 一个指定
namespaceSelector
和podSelector
的to
/from
条目选择特定名字空间中的特定 Pod
五、参考文档链接
网络策略 | Kubernetes
仅做学习笔记参考使用