Kubernetes NetworkPolicy不允许HTTP/HTTPS端口上的出口

Kubernetes NetworkPolicy不允许HTTP/HTTPS端口上的出口,kubernetes,azure-aks,kubernetes-networkpolicy,cilium,Kubernetes,Azure Aks,Kubernetes Networkpolicy,Cilium,我正在使用下面的NetworkPolicy来允许HTTP和HTTPS端口上的出口,但运行的是wgethttps://google.com在应用网络策略时不起作用。域名已解析(DNS出口规则有效),但连接到外部主机超时 我在minikube和cilium上试过,在Azure和Azure npm上试过,以防网络策略控制器出现问题,但在这两个平台上的行为都是一样的。我很困惑,因为我对DNS出口使用了相同的方法(这是可行的),但对其他端口却失败了 什么在阻止HTTP/HTTPS端口上的出口 Kubern

我正在使用下面的NetworkPolicy来允许HTTP和HTTPS端口上的出口,但运行的是
wgethttps://google.com
在应用网络策略时不起作用。域名已解析(DNS出口规则有效),但连接到外部主机超时

我在minikube和cilium上试过,在Azure和Azure npm上试过,以防网络策略控制器出现问题,但在这两个平台上的行为都是一样的。我很困惑,因为我对DNS出口使用了相同的方法(这是可行的),但对其他端口却失败了

什么在阻止HTTP/HTTPS端口上的出口

Kubernetes版本1.11.5

apiVersion: extensions/v1beta1
kind: NetworkPolicy
metadata:
  name: my-netpolicy
spec:
  egress:
  - ports:
    - port: 53
      protocol: UDP
    - port: 53
      protocol: TCP
  - ports:
    - port: 443
      protocol: UDP
    - port: 443
      protocol: TCP
    - port: 80
      protocol: UDP
    - port: 80
      protocol: TCP
  podSelector:
    matchLabels:
      my-label: my-app
(是的,UDP规则可能是不必要的,但在这里尝试一切)

(我也尝试过在私有服务器上使用
wget
,以防Google/etc阻止Azure IPs,同样的结果)

(我也尝试过匹配入口规则,因为“为什么不”,结果相同)


kubectl描述网络策略:

Name:         my-netpolicy
Namespace:    default
Created on:   2019-01-21 19:00:04 +0000 UTC
Labels:       ...
Annotations:  <none>
Spec:
  PodSelector:     ...
  Allowing ingress traffic:
    To Port: 8080/TCP
    From: <any> (traffic not restricted by source)
    ----------
    To Port: https/UDP
    To Port: https/TCP
    To Port: http/TCP
    To Port: http/UDP
    From: <any> (traffic not restricted by source)
  Allowing egress traffic:
    To Port: 53/UDP
    To Port: 53/TCP
    To: <any> (traffic not restricted by source)
    ----------
    To Port: https/UDP
    To Port: https/TCP
    To Port: http/UDP
    To Port: http/TCP
    To: <any> (traffic not restricted by source)
  Policy Types: Ingress, Egress
然后:


事实证明,我给出的策略运行良好,只是实现该策略的控制器有一些bug。在Minikube+Cilium上,它不适用于IPv6,但适用于IPv4,在AKS上,该功能仍处于测试阶段,我们可以尝试其他选项。在使用azure npm实现时,我没有发现任何关于我的具体问题的信息,但由于它在IPv4上的Minikube中工作良好,因此我假设一旦设置了“工作”控制器,它在azure中也会工作良好

我为Azure问题找到了一些资源:


您能描述当前的
NetworkPolicy
kubectl description NetworkPolicy my netpolicy
?@mk\u sta-我编辑了原始Post似乎k8s无法识别80和443端口的任何
出口
规则output@mk_sta我还尝试了LDAP端口389、636和3269的出口规则,这些规则也不起作用。我不确定如何解释这些结果或在此继续。您是否可以检查您当前的策略Pod配置:
kubectl get networkpolicy my netpolicy-o yaml
是否使用适当的端口值保持?
apiVersion: v1
kind: Pod
metadata:
  name: netpolicy-poc-pod
  labels:
    name: netpolicy-poc-pod
spec:
  containers:
  - name: poc
    image: ubuntu:18.04
    command: ["bash", "-c", "while true; do sleep 1000; done"]
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: netpolicy-poc
spec:
  podSelector:
    matchLabels:
      name: netpolicy-poc-pod
  egress:
  - ports:
    - port: 80
      protocol: UDP
    - port: 80
      protocol: TCP
    - port: 443
      protocol: UDP
    - port: 443
      protocol: TCP
    - port: 53
      protocol: UDP
    - port: 53
      protocol: TCP
  ingress: []
kubectl exec -it netpolicy-poc /bin/bash
apt update
apt install wget -y
wget https://google.com