Kubernetes网络策略阻止DNS

Kubernetes网络策略阻止DNS,kubernetes,dns,azure-aks,kubernetes-networkpolicy,Kubernetes,Dns,Azure Aks,Kubernetes Networkpolicy,我有一个AKS群集(Azure CNI),我正试图在其上实施网络策略。我已经创建了网络策略,它是 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: myserver spec: podSelector: matchLabels: service: my-server policyTypes: - Ingress - Egress ingress: - from:

我有一个AKS群集(Azure CNI),我正试图在其上实施网络策略。我已经创建了网络策略,它是

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: myserver
spec:
  podSelector:
    matchLabels:
      service: my-server
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          service: myotherserver
    - podSelector:
        matchLabels:
          service: gateway
    - podSelector:
        matchLabels:
          service: yetanotherserver
    ports:
     - port: 8080
       protocol: TCP
  egress:
    - to:
      ports:
       - port: 53
         protocol: UDP
       - port: 53
         protocol: TCP
       - port: 5432
         protocol: TCP
       - port: 8080
         protocol: TCP
但当我应用该策略时,我会看到主机名无法解析的重复消息。我已经在myserver pod上安装了dnsutils;并且可以看到DNS请求正在超时;我还尝试在同一个pod上安装tcpdump;我可以看到从myserver到kube dns的请求。我没有看到任何回复


如果我删除网络策略,DNS会直接返回;因此,我确定我的网络策略存在问题,但无法找到允许DNS流量的方法。如果有人能告诉我哪里出了问题,我将不胜感激

为避免重复,请创建单独的网络策略以开放DNS流量。首先,我们标记
kube系统
名称空间。然后允许从所有pod到
kube系统
命名空间的DNS通信

kubectl label namespace kube-system name=kube-system

kubectl create -f - <<EOF
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-dns-access
  namespace: <your-namespacename>
spec:
  podSelector:
    matchLabels: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - namespaceSelector:
        matchLabels:
          name: kube-system
    ports:
    - protocol: UDP
      port: 53

EOF
kubectl标签名称空间kube system name=kube system

kubectl创建-f-以避免重复创建一个单独的网络策略以开放DNS流量。首先,我们标记
kube系统
名称空间。然后允许从所有pod到
kube系统
命名空间的DNS通信

kubectl label namespace kube-system name=kube-system

kubectl create -f - <<EOF
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-dns-access
  namespace: <your-namespacename>
spec:
  podSelector:
    matchLabels: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - namespaceSelector:
        matchLabels:
          name: kube-system
    ports:
    - protocol: UDP
      port: 53

EOF
kubectl标签名称空间kube system name=kube system
kubectl创建-f-