Kubernetes Networkpolicy 未按预期工作
Kubernetes Networkpolicy does not work as expected
我对 Calico 上的网络策略还很陌生。我在集群上创建了以下 NetworkPolicy:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: nginxnp-po
namespace: default
spec:
podSelector:
matchLabels:
run: nginxnp
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
acces: frontend
ports:
- port: 80
我是这样读的:所有具有选择器 run=nginxnp
的 pods 只能从具有选择器 access=frontend
.[=17= 的每个 pod 在端口 80 上访问]
这是我的 nginx pod(里面有一个 运行 nginx):
$ kubectl get pods -l run=nginxnp
NAME READY STATUS RESTARTS AGE
nginxnp-9b49f4b8d-tkz6q 1/1 Running 0 36h
我创建了一个像这样的 busybox 容器:
$ kubectl run busybox --image=busybox --restart=Never --labels=access=frontend -- sleep 3600
我可以看到它匹配选择器 access=frontend
:
$ kubectl get pods -l access=frontend
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 6m30s
然而,当我执行到 busybox pod 并尝试 wget nginx pod 时,连接仍然被拒绝。
我也尝试设置一个出口规则,允许相反的流量,但这也没有做任何事情。据我了解网络策略:当没有设置规则时,没有任何东西被阻止。因此,当我没有设置出口规则时,出口不应被阻止。
如果我删除网络策略,它就会起作用。非常感谢任何指点。
NetworkPolicy 模板中有错别字 acces: frontend
应该是 access: frontend
ingress:
- from:
- podSelector:
matchLabels:
acces: frontend
我对 Calico 上的网络策略还很陌生。我在集群上创建了以下 NetworkPolicy:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: nginxnp-po
namespace: default
spec:
podSelector:
matchLabels:
run: nginxnp
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
acces: frontend
ports:
- port: 80
我是这样读的:所有具有选择器 run=nginxnp
的 pods 只能从具有选择器 access=frontend
.[=17= 的每个 pod 在端口 80 上访问]
这是我的 nginx pod(里面有一个 运行 nginx):
$ kubectl get pods -l run=nginxnp
NAME READY STATUS RESTARTS AGE
nginxnp-9b49f4b8d-tkz6q 1/1 Running 0 36h
我创建了一个像这样的 busybox 容器:
$ kubectl run busybox --image=busybox --restart=Never --labels=access=frontend -- sleep 3600
我可以看到它匹配选择器 access=frontend
:
$ kubectl get pods -l access=frontend
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 6m30s
然而,当我执行到 busybox pod 并尝试 wget nginx pod 时,连接仍然被拒绝。
我也尝试设置一个出口规则,允许相反的流量,但这也没有做任何事情。据我了解网络策略:当没有设置规则时,没有任何东西被阻止。因此,当我没有设置出口规则时,出口不应被阻止。
如果我删除网络策略,它就会起作用。非常感谢任何指点。
NetworkPolicy 模板中有错别字 acces: frontend
应该是 access: frontend
ingress:
- from:
- podSelector:
matchLabels:
acces: frontend