kubernetes - 为什么网络策略入口不适用于我的案例
问题描述
我使用 2 个 pod 进行了部署:
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
但是当我使用不包含标签(角色=前端)的busybox pod通过wget请求它时,我仍然得到nginx的html页面。
我想知道为什么 ?
任何帮助都会非常感激。谢谢 :)
解决方案
如果你的 k8s 集群部署了Container Network Interface (CNI)
不支持网络策略的插件,它不会对其产生影响。来自k8s 文档:
网络策略由网络插件实现。要使用网络策略,您必须使用支持 NetworkPolicy的网络解决方案。在没有实现它的控制器的情况下创建 NetworkPolicy 资源将无效。
推荐阅读
- javascript - 简单的 Javascript 幻灯片(所以我知道),获取下一张幻灯片属性以在当前幻灯片中显示
- javascript - 如何在单击输入类型提交后使页面不重新加载并且不打开php页面?
- javascript - async / await 链接何时停止?
- java - XML cardView 阻塞了它下面的 recyclerView 的上半部分
- c# - 如何使用服务帐户发出 Google Home Graph 请求?
- arrays - 使用 fscanf 填充结构体数组
- android - Visual Studio 下的 Android Activity 在引用 .a 库时尝试构建时导致“未定义的引用”
- c - 我的 C 程序无法识别有效输入,认为这是因为换行问题
- ruby-on-rails - 这是在后端允许在 Rails 中使用参数的安全方法吗?
- python - *不*能够从文件中取回值