Kubernetes NetworkPolicy不允许HTTP/HTTPS端口上的出口
我正在使用下面的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
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