Kubernetes 网络策略不允许命名空间内的通信
我很难设置一个对我来说很好的网络策略。下面是同一名称空间中的两个podKubernetes 网络策略不允许命名空间内的通信,kubernetes,kubernetes-networkpolicy,Kubernetes,Kubernetes Networkpolicy,我很难设置一个对我来说很好的网络策略。下面是同一名称空间中的两个pod k get po --show-labels NAME READY STATUS RESTARTS AGE LABELS nfs-server-ccb8d5ff6-7rtr4 1/1 Running 0 22h role=nfs-server nginx-jpm-549b69bf68-x5hd7 1/1 Run
k get po --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nfs-server-ccb8d5ff6-7rtr4 1/1 Running 0 22h role=nfs-server
nginx-jpm-549b69bf68-x5hd7 1/1 Running 0 21h app=nginx-jpm
我使用以下网络策略规范限制nfs服务器pod的流量:
spec:
podSelector:
matchLabels:
role: nfs-server
policyTypes:
- Ingress
- Egress
ingress:
# Allow inbound from nginx-jpm on all ports
- from:
- podSelector:
matchLabels:
app: nginx-jpm
egress:
# Allow outbound DNS traffic inside the cluster (kube-system namespace is not labelled)
- to:
- namespaceSelector: {}
ports:
- protocol: "UDP"
port: 53
我执行进入nginx pod,无法连接到nfs服务器pod
root@nginx-jpm-549b69bf68-x5hd7:/# telnet nfs-server.jenkinsrepo.svc.cluster.local 111
Trying 172.22.117.55...
If I delete the network policy, it works then
root@nginx-jpm-549b69bf68-x5hd7:/# telnet nfs-server.jenkinsrepo.svc.cluster.local 111
Trying 172.22.117.55...
Connected to nfs-server.jenkinsrepo.svc.cluster.local.
Escape character is '^]'.
我的网络策略中有没有遗漏什么?命名空间中没有其他网络策略。由于您有
podSelector
选择具有角色:nfs服务器标签的pod,因此出口规则仅应用于这些pod,因此从nginx pod阻止出口。您可能应该为仅适用于所有POD的群集DNS的出口创建一个单独的网络策略。您的出口规则被转换为将这些规则应用于命名空间未标记为“AND”和“port 53 UDP,its”和“of rules”的流量。尽管DNS出口流量可能正在工作,但中所有吊舱的所有其他出口流量仍然被阻止,这可能是原因
如果您尝试以下方法,它将允许传出流量,如果:(目标pod具有未标记的命名空间)或((端口为53 UDP)或(端口为53 TCP))
链接:
egress:
- to:
- namespaceSelector: {}
- ports: # 2nd egress rule
- port: 53 # allow DNS UDP
protocol: UDP
- port: 53 # allow DNS TCP
protocol: TCP