【问题标题】:kubernetes - Ingress network policy not working as excpectedkubernetes - 入口网络策略未按预期工作
【发布时间】: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 ingressnginx ingressnginx ingress for kubernetes
  • 是的,network.yaml 文件的完整内容在问题描述中。我正在尝试的集群使用 nginx 入口。

标签: kubernetes kubernetes-ingress kubernetes-networkpolicy


【解决方案1】:

经过反复试验,我观察到以下情况。 根据 Kubernetes 网络策略documentation,部署的网络策略只有在 Kubernetes 集群中安装了network plugin 时才会生效。

由于我本地的minikube 集群没有network plugin,所以我在问题描述中提到的网络策略无效。

在我的minikube 集群中安装Cillium Network Plugin 之后,网络策略按预期工作。

注意事项:

  • 使用docker 作为驱动程序时,minikube 上的Cillium Network Plugin 安装不成功。但它在选择hyperv作为驱动程序时工作。
  • 我还必须为带有 app=app2 标签的 pod 创建一个 Egress 策略,以允许来自带有 app=app3 标签的 pod 的出口流量(参见下面的示例)。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-app2
  namespace: firstspace
spec:
  podSelector: 
    matchLabels:
      app: app2
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: app3
  policyTypes:
  - Egress

【讨论】:

    猜你喜欢
    • 2021-07-09
    • 2020-06-13
    • 2020-01-01
    • 2017-07-11
    • 2019-07-30
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多