繁体   English   中英

Kubernetes 网络策略停止所有到 Pod 的流量

[英]Kubernetes Network Policy stops all traffic to Pod

设想:

  1. 我有四 (4) 个 Pod,薪资,内部,外部,mysql。
  2. 我希望内部 pod 只能访问:
    • 一种。 内部 > 端口 8080 上的工资单
    • 端口 3306 上的内部 > mysql

请建议缺少的部分是什么? 我制定了以下网络策略。 但是我的吊舱无法与“任何”吊舱通信。 因此它实现了给定的目标,但实际上无法访问其他 pod。 以下是我的网络策略详细信息。

master $ k describe netpol/internal-policy
Name:         internal-policy
Namespace:    default
Created on:   2020-02-20 02:15:06 +0000 UTC
Labels:       <none>
Annotations:  <none>
Spec:
  PodSelector:     name=internal
  Allowing ingress traffic:
    <none> (Selected pods are isolated for ingress connectivity)
  Allowing egress traffic:
    To Port: 8080/TCP
    To:
      PodSelector: name=payroll
    ----------
    To Port: 3306/TCP
    To:
      PodSelector: name=mysql
  Policy Types: Egress

策略 YAML

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: internal-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      name: internal
  policyTypes:
  - Egress
  egress:
  - to:
    - podSelector:
        matchLabels:
          name: payroll
    ports:
      - protocol: TCP
        port: 8080
  - to:
    - podSelector:
        matchLabels:
          name: mysql
    ports:
      - protocol: TCP
        port: 3306 (edited) 

因此它实现了给定的目标,但实际上无法访问其他 pod。

如果我理解正确,您就实现了网络策略中定义的目标,并且所有带有标签name: internalPods name: internal目前能够与payroll (在端口8080 )和mysql (在端口3306Pods ,对吗?

如果我错了,请纠正我,但我在您的陈述中看到了一些矛盾。 一方面,您希望internal Pods只能与非常特定的一组Pods通信并使用指定的端口与它们连接:

我希望内部 pod 只能访问:

一种。 内部 > 端口 8080 上的工资单

端口 3306 上的内部 > mysql

另一方面,您似乎对他们无法访问任何其他Pods感到惊讶:

因此它实现了给定的目标,但实际上无法访问其他 pod。

请记住,当你申请一些NetworkPolicy上一组特定的规则Pods ,在同一时间的dafault拒绝所有规则所选择的隐式应用Pods (除非你决定重新配置的默认策略,使其工作您想要的方式)。

正如你可以在这里阅读:

Pod 通过具有选择它们的 NetworkPolicy 变得孤立。 一旦命名空间中有任何 NetworkPolicy 选择特定 pod,该 pod 将拒绝任何 NetworkPolicy 不允许的任何连接。 (命名空间中未被任何 NetworkPolicy 选择的其他 pod 将继续接受所有流量。)

以上也适用于egress规则。

如果目前你的internal Pods只能访问payrollmysql Pod上指定ports ,因为它应该工作一切正常。

如果您有兴趣拒绝所有其他流量到您的payrollmysql Pods ,您应该在这些Pods上应用ingress规则,而不是在应该与它们通信的Pods上定义egress ,但同时不应该剥夺它们与其他Pods通信的能力。

如果有帮助,请告诉我。 如果有什么不清楚或我的假设有误,也请告诉我,不要犹豫,提出其他问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM