问题描述
我用2个吊舱进行了部署:
apiVersion: apps/v1
kind: Deployment
Metadata:
creationTimestamp: null
labels:
app: Nginx
name: Nginx
spec:
replicas: 2
selector:
matchLabels:
app: Nginx1
strategy: {}
template:
Metadata:
creationTimestamp: null
labels:
app: Nginx1
spec:
containers:
- image: Nginx
name: Nginx
resources: {}
ports:
- containerPort: 80
status: {}
然后使用clusterip公开它,然后创建如下的网络策略:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
Metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
app: Nginx1
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
role: frontend
但是当我使用不包含标签(role = frontend)的busyBox pod通过wget请求它时,我仍然得到Nginx的html页面。
我想知道为什么吗?
任何帮助都会非常有用。谢谢:)
解决方法
如果您的k8s集群是使用不支持网络策略的Container Network Interface (CNI)
插件部署的,则不会对其产生影响。来自k8s docs:
网络策略由网络插件实施。要使用网络策略,您必须使用支持NetworkPolicy 的网络解决方案。在没有实现该控制器的控制器的情况下创建NetworkPolicy资源将无效。