簡體   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