Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 网络策略不允许命名空间内的通信_Kubernetes_Kubernetes Networkpolicy - Fatal编程技术网

Kubernetes 网络策略不允许命名空间内的通信

Kubernetes 网络策略不允许命名空间内的通信,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

我很难设置一个对我来说很好的网络策略。下面是同一名称空间中的两个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     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