最近更新时间:2023-10-09 20:02:02
NetworkPolicy是Kubernetes提供的一种资源,用于定义基于Pod的网络隔离策略。Networkpolicy允许在IP地址或端口层面(第3层或第4层)对特定应用程序的网络流量进行控制。通过设置规则,可以限制Pod之间的通信,确保只有经过授权的Pod可以相互通信,从而增强网络安全性。
Networkpolicy提供3种可以组合使用的规则:
在创建集群时,网络模型需要选择Calico
默认情况下,如果命名空间中不存在任何策略,则所有进出该名字空间中 Pod 的流量都被允许。
在命名空间(default)中的所有Pod上启用默认的拒绝策略,阻止任何Ingress(入站)流量进入这些Pod。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
namespace: default
spec:
podSelector: {}
policyTypes:
- Ingress
在命名空间(default)中的所有Pod允许所有的Ingress(入站)流量。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all-ingress
namespace: default
spec:
podSelector: {}
ingress:
- {}
policyTypes:
- Ingress
在命名空间(default)中的所有Pod上启用默认的拒绝策略,限制任何出站流量,阻止这些Pod发起对外部的网络访问。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-egress
namespace: default
spec:
podSelector: {}
policyTypes:
- Egress
在命名空间(default)中的所有Pod上启用允许所有的Egress流量的策略,允许这些Pod发起对任何目的地的出站网络访问。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all-egress
namespace: default
spec:
podSelector: {}
egress:
- {}
policyTypes:
- Egress
在命名空间(default)中的具有标签role: db的Pod上启用策略,允许来自具有标签role: frontend的Pod的TCP流量进入这些Pod的6379端口。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
role: frontend
ports:
- protocol: TCP
port: 6379
在命名空间(default)中具有标签role: db的Pod上启用策略,允许来自具有标签project: myproject的命名空间的TCP流量进入这些Pod的6379端口。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
project: myproject
ports:
- protocol: TCP
port: 6379
在命名空间(default)中具有标签role: db的Pod上启用策略,允许来自CIDR范围为172.17.0.0/16的IP地址的TCP流量进入这些Pod的6379端口,但排除了CIDR范围为172.17.1.0/24的IP地址。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
ingress:
- from:
- ipBlock:
cidr: 172.17.0.0/16
except:
- 172.17.1.0/24
ports:
- protocol: TCP
port: 6379
纯净模式