【问题标题】:Kubernetes Egress Network Policy is not working on a pod selectedKubernetes 出口网络策略不适用于选定的 pod
【发布时间】:2020-11-15 04:55:05
【问题描述】:

在我的 kube 集群上设置出口网络策略时遇到了一个奇怪的问题。

基本上我希望我的 pod A 只能访问 pod B。

我有两个豆荚:

  1. hello-k8s-deploy
  2. nginx

hello-k8s-deploy pod 通过 NodePort 在端口 8080 上公开一个 API。 我的 nginx pod 只是一个访问 API 的图像。

让我们尝试登录 nginx pod 并访问 hello-k8s-deploy pod 公开的 API。

上图显示 API 响应以 Hello K8s! 开头的消息

现在让我们在我的 nginx pod 上应用网络策略,这样它就只能访问这个 API,不能访问其他任何东西。

网络政策:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: app
spec:
  podSelector:
    matchLabels:
      run: nginx
  egress:
    - to:
      - podSelector:
          matchLabels:
            app: hello-k8s-deploy
  policyTypes:
   - Egress

以上策略将应用于标签为 run: nginx 的 pod

规则是允许流量到标签为app: hello-k8s-deploy的pod

让我们通过查看 Pod nginx 和 hello-k8s-deploy 的定义来验证它

nginx:

hello-k8s-deploy

我们可以看到两个标签都匹配网络政策。

在我应用网络策略并再次访问 nginx 后,我希望能正常工作并从 API 获得响应,但我收到以下错误。

请注意:

  1. 所有资源都在同一个命名空间app
  2. 我的网络插件是 weave-net,它根据文档支持网络策略。
  3. 我什至尝试指定命名空间选择器并添加端口 8080。

【问题讨论】:

    标签: nginx kubernetes weave


    【解决方案1】:

    我终于解决了这个问题,基本上我遇到的问题是could not resolve host hello-k8s-svc。这意味着 k8s 正在尝试使用此主机连接并通过 dns 名称(服务名称)进行解析。

    因为我的 pod 只允许出口到 hello-k8s-deploy,所以它失败了,因为它还需要连接到 kube-dns 来解析 dns。因此,在应用 egress 之前,请确保命名空间中的 pod 或所有 pod 都允许连接到 kube-dns 以进行 dns 解析。

    解决方法是简单地为所有 pod 创建一个出口资源,以在您的 pod 特定出口配置之上连接到 kube-dns。

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: default-deny-all-egress
    spec:
      podSelector: {}
      egress:
      - to:
        - namespaceSelector:
            matchLabels:
              networking/namespace: kube-system
          podSelector:
            matchLabels:
              k8s-app: kube-dns
        ports:
        - protocol: TCP
          port: 53
        - protocol: UDP
          port: 53
      policyTypes:
      - Egress
    

    在我的例子中,我标记了 kube-system 命名空间:

     kubectl label namespace kube-system networking/namespace=kube-system
    

    【讨论】:

      猜你喜欢
      • 2022-11-14
      • 1970-01-01
      • 2020-01-01
      • 2020-06-16
      • 2019-02-04
      • 2022-01-13
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多