限制k8s中网络访问
1. 禁止指定namespace下指定服务的访问互联网
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-egress-internet
namespace: pre
spec:
podSelector:
matchLabels:
svc: test
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/8
- ipBlock:
cidr: 172.16.0.0/12
- ipBlock:
cidr: 192.168.0.0/16
- ipBlock:
cidr: 100.64.0.0/10
允许带有 “svc=test” 标签的 Pod 访问特定的私有网络段,而禁止访问其他所有网络。
podSelector:这个字段选择了带有 “svc=test” 标签的 Pod。这个 NetworkPolicy 将应用于这些 Pod。
policyTypes:这个字段指定了这个 NetworkPolicy 应用于出站流量(Egress)。
egress:这个字段定义了出站流量的规则。这个规则允许 Pod 访问以下 IP 地址段:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
- 100.64.0.0/10
2. 控制Pod的网络流量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-public-network-for-labels
namespace: pre
spec:
#出口规则
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
- namespaceSelector:
matchLabels:
ns: kube-system
#入口规则
ingress:
- from:
- ipBlock:
cidr: 0.0.0.0/0
podSelector:
matchExpressions:
- key: app
operator: In
values:
- test
policyTypes:
- Ingress
- Egress
允许带有 “app=test” 标签的 Pod 访问所有 IP 地址和 “kube-system” 命名空间,并允许所有 IP 地址访问这些 Pod
podSelector:这个字段选择了带有 “app=test” 标签的 Pod。这个 NetworkPolicy 将应用于这些 Pod。
egress:这个字段定义了出站流量的规则。这个规则允许 Pod 访问所有 IP 地址(0.0.0.0/0 表示所有 IP 地址)和带有 “ns=kube-system” 标签的命名空间。
ingress:这个字段定义了入站流量的规则。这个规则允许所有 IP 地址访问 Pod。
policyTypes:这个字段指定了这个 NetworkPolicy 应用于入站流量(Ingress)和出站流量(Egress)
本文由作者按照
CC BY 4.0
进行授权