【发布时间】:2021-10-03 21:17:26
【问题描述】:
每个部署都有 3 个 Kubernetes 部署和服务(命名空间 = firstspace)。 每个部署按顺序标记为 app1、app2、app3。
例如,如果我运行以下命令。结果我会得到第一个 pod。
kubectl get pods -l app=app1 --namespace firstspace
我的目标是使用以下网络策略限制第三个 pod (app=app3) 的 Ingress 访问,仅允许来自第二个 pod (app=app2) 的流量以及来自另一个名为“secondspace”的命名空间的任何 pod。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: ingress-app3
namespace: firstspace
spec:
podSelector:
matchLabels:
app: app3
ingress:
- from:
- namespaceSelector:
matchLabels:
name: secondspace
- podSelector:
matchExpressions:
- {key: app, operator: In, values: [app2]}
policyTypes:
- Ingress
但是,当我将网络策略部署到“firstspace”命名空间时,我仍然可以使用第一个 pod (app=app1) 卷曲(并获取示例 JSON 响应)第三个 pod (app=app3) 的服务.
以下是一个示例命令。这里的 10.100.150.0 是为第三个 pod 创建的服务的 ClusterIP。
kubectl exec app1-849b94c6df-rzdls --namespace firstspace-- curl -sL 10.100.150.0:8080/testendpoint
有人可以帮我理解我在这里做错了什么吗?
【问题讨论】:
-
您使用的是哪个版本的 Kubernetes,您是如何部署的?还请具体说明您使用的是哪个入口?
-
Kubernetes 服务器版本:version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.7"。我使用命令
$ kubectl apply -f network.yaml部署它。 -
我想我正在使用默认入口。请注意,我是 Kubernetes 的新手。
-
您的
network.yaml文件是否附加到问题中?您需要准确说明,您使用了哪个 Kubernetes:Kubernetes ingress、nginx ingress 或 nginx ingress for kubernetes? -
是的,network.yaml 文件的完整内容在问题描述中。我正在尝试的集群使用 nginx 入口。
标签: kubernetes kubernetes-ingress kubernetes-networkpolicy