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

时间:2020-02-20 04:47:08

标签: networking kubernetes policy

场景:

  1. 我有四(4)个Pod,工资单,内部,外部,mysql。
  2. 我希望内部窗格只能访问:
    • a。内部>端口8080上的工资核算
    • b。内部>端口3306上的mysql

请提出缺失的部分?我制定了以下网络策略。但是我的广告连播无法与“任何”广告连播进行通信。 因此,它已达到给定的目标,但实际上无法访问其他吊舱。以下是我的网络政策详细信息。

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) 

1 个答案:

答案 0 :(得分:0)

因此,它已经达到了既定目标,但实际上无法 访问其他吊舱。

如果我对您的理解正确无误,则您实现了网络政策中定义的目标,并且所有Pods佩戴标签name: internal的人目前都可以与{{1} }(在端口payroll上)和8080(在端口mysql上)3306,对吗?

如果我错了,请纠正我,但我发现你的陈述中有一些矛盾之处。一方面,您希望Pods internal仅能与一组非常具体的Pods通信,并使用指定的端口与它们连接:

我希望内部窗格只能访问:

a。内部>端口8080上的工资核算

b。内部>端口3306上的mysql

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

因此,它已经达到了既定目标,但实际上无法 访问其他吊舱。

请记住,当您在特定的Pods组上应用某些NetworkPolicy规则时,同时dafault 否认全部规则会隐式应用于选定的{{ 1}}(除非您决定重新配置default policy以使其按您希望的方式工作)。

您可以阅读here

通过具有选择它们的NetworkPolicy可以隔离它们。一旦 命名空间中有任何NetworkPolicy选择特定的容器, 该广告连播会拒绝任何人不允许的任何连接 网络政策。 (名称空间中未被选择的其他Pod 任何NetworkPolicy都会继续接受所有流量。)

以上内容也适用于Pods规则。

如果当前您的Pods egress仅可访问指定internal上的Podspayroll mysql,则一切正常工作。

如果您有兴趣拒绝发给Podports payroll的所有其他流量,则应对这些mysql应用Pods规则,而不是在ingress上定义应该与之通信的Pods,但同时不应剥夺与其他egress进行通信的能力。

请告诉我是否有帮助。如果不清楚或我的假设是错误的,也请让我知道,不要犹豫,提出其他问题。