networking - Kubernetes 网络策略停止到 Pod 的所有流量
问题描述
设想:
- 我有四 (4) 个 Pod、工资单、内部、外部、mysql。
- 我希望内部 pod 只能访问:
- 一个。内部 > 8080 端口上的工资单
- 湾。内部 > mysql 在端口 3306
请建议缺少什么部分?我制定了以下网络策略。但我的吊舱无法与“任何”吊舱通信。因此它已经实现了给定的目标,但实际上无法访问其他 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。
如果我对您的理解正确,您实现了网络政策中定义的目标,并且您的所有Pods
佩戴标签name: internal
目前都能够与payroll
(on port 8080
) 和mysql
(on port 3306
)进行通信Pods
,对吗?
如果我错了,请纠正我,但我在你的陈述中看到了一些矛盾。一方面,您希望您internal
Pods
只能与非常特定的一组通信Pods
并使用指定的端口与它们连接:
我希望内部 pod 只能访问:
一个。内部 > 8080 端口上的工资单
湾。内部 > mysql 在端口 3306
另一方面,您似乎对他们无法访问任何其他内容感到惊讶Pods
:
因此它已经实现了给定的目标,但实际上无法访问其他 pod。
请记住,当您NetworkPolicy
在特定集合上应用某些规则时Pods
,同时默认拒绝所有规则会隐式应用到 selected 上Pods
(除非您决定重新配置默认策略以使其按您想要的方式工作)。
你可以在这里阅读:
Pod 通过选择它们的 NetworkPolicy 变得孤立。一旦命名空间中有任何 NetworkPolicy 选择特定 pod,该 pod 将拒绝任何 NetworkPolicy 不允许的任何连接。(命名空间中未被任何 NetworkPolicy 选择的其他 pod 将继续接受所有流量。)
以上也适用于egress
规则。
如果当前您internal
Pods
只能访问指定的payroll
,则一切正常。mysql
Pod
ports
如果您有兴趣拒绝与您的payroll
and的所有其他流量,您应该对这些流量mysql
Pods
应用ingress
规则,Pods
而不是定义应该与它们通信的流量,但同时不应剥夺它们与其他流量通信的能力。egress
Pods
Pods
请让我知道它是否有帮助。如果有什么不清楚或我的假设是错误的,也请告诉我,不要犹豫,提出其他问题。
推荐阅读
- c# - 如何将 String string dataReturned = "62 07 00 00 04 05 00 01 A0" 转换为 List
在 C# 中 - jsf - 错误渲染视图 [/login.xhtml]:启动服务器 PF10 时出现 java.lang.NullPointerException
- python - 当火焰传感器为真时,为什么我无法读取 firebase 上的“检测到火灾”?
- ios - 将 2 UITabBarItem 定位到屏幕的左右两侧,中间为 void
- arrays - 使用基本 Scala 包,我如何将此 JSON 数组转换为实际数组?
- r - 将 data.frame 转换为邻接矩阵列表不显示值(在 R 中)
- java - 添加到 Arraylist 时 JTable 没有更新?
- android - Kotlin 我的应用程序 android 模拟器和我的 decive 工作但签名或调试 apk 不工作
- javascript - Socket.io JS客户端返回连接错误
- python - 用铬烧瓶中的文件写入错误