问题标签 [kubernetes-networkpolicy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
591 浏览

google-kubernetes-engine - GKE 网络政策和 ExternalName

我需要禁用命名空间中来自我的 pod 的所有出口流量,除了一个方向,例如 yahho.com 我的 service.yaml 看起来像:

我的网络策略文件会阻止所有输出流量:

我尝试使用允许的结构:

你能纠正我的施工podSelector以通过交通吗?我在文档中找不到任何想法。

0 投票
1 回答
374 浏览

kubernetes - Kubernetes 上的 NetworkPolicy 只允许 UI 与后端对话?

需要注意的是后端(烧瓶服务)需要与 MongoDB 对话以获取数据。如果在网络策略中,我将其添加nodeSelector为我的烧瓶服务,并将 UI 添加到入口,并将 UI 和 MongoDB 上的 Egress 添加到规则,它仍然不起作用。

我的入口看起来像 -

我是否必须在我的网络策略的 podSelector 选项中指定我的入口?

到目前为止,我的网络策略如下所示 -

故障排除:

我已经尝试启动一个 pod 并将该 pod 添加到入口中。当它被允许进入入口时,我能够从 pod ping xyz-svc,而当我从入口中删除它时,它被拒绝,因此证明网络策略正在运行。

我想了解标签、选择器和 matchLabels。

我已经阅读了这些链接,但我想对我的 NetworkPolicy 有一个直观的解释,例如:

podSelector:需要应用网络策略的 pod(可以是部署或应用名称或层名称或运行)

ingress:允许或拒绝访问上述 pod 的流量

egress:允许或拒绝访问从上述 pod 发出的流量。您的 pod 名称应与哪些标签匹配?

命名空间选择器?

吊舱选择器?

编辑:入口 YAML

0 投票
0 回答
111 浏览

kubernetes - NetworkPolicy 无法限制来自 UI 的 Ingress

我使用 a 部署了烧瓶服务(6 个副本)和 ui(3 个副本),kind:Deployment但是当我添加这样的印花布 NetworkPolicy 时:

如果我直接访问它,我的烧瓶服务就像这样

这可能是意料之中的,但我的 UI 也无法到达端点。

这是为什么?

编辑 2:Kubernetes 和入口信息

Kubernetes 版本 -

我的入口看起来像 -

我是否必须在我的网络策略的 podSelector 选项中指定我的入口?

到目前为止,我的网络策略如下所示 -

编辑 1:我了解到我们需要在网络策略之前使用配置映射公开端口 8000。

编辑 3:对于 UI,我的意思是使用节点图像完成部署。我必须检查请求是通过 UI pod 发送还是直接发送到 svc pod。

0 投票
1 回答
1009 浏览

kubernetes - 如何验证集群网络策略配置/支持

我试图找出验证给定集群的网络策略配置的最佳方法。 根据文档

网络策略是由网络插件实现的,因此您必须使用支持 NetworkPolicy 的网络解决方案——简单地创建资源而没有控制器来实现它是没有效果的。

假设我只能通过 kubectl 访问我的集群,我应该怎么做才能确保部署到集群中的网络策略资源得到遵守?

我知道可用的 CNI 和相关的矩阵功能
我知道您可以检查与这些 CNI 相关的 kube-system 下部署的 pod,并使用 for ex 验证相关功能。我共享的矩阵,但我想知道是否有更结构化的方法来验证当前安装的 CNI 和相关功能。

关于“实现它的控制器”,有没有办法获取与网络策略相关的插件/控制器列表?

0 投票
2 回答
449 浏览

kubernetes - 拒绝来自特定命名空间的流量的网络策略

假设我有 5 个命名空间 - prod、preprod、uat、dev 和 test。每个命名空间都有不同的标签 - ns=prod、ns=preprod、ns=uat、ns=dev 和 ns=test。

问题:所以我想创建一个网络策略,我不想将流量(出口)从 ns=test 发送到标签为 ns=prod 的特定命名空间。但是 ns=test 应该能够出口到所有其他命名空间。

文档: https ://kubernetes.io/docs/concepts/services-networking/network-policies/ https://kubernetes.io/docs/tasks/administer-cluster/declare-network-policy/

我试图从上述文档创建一个清单文件,但没有运气。我可以使用 podSelector (豆荚的标签,但不只使用整个名称空间)来做到这一点。

0 投票
0 回答
64 浏览

kubernetes - Kubernetes 中没有发生 DNS 名称解析

我们设置了 3 个节点的 Kubernetes 集群。一个是主人,两个是奴隶。并在master节点安装了zookeeper和active mq。当我们在部署应用程序后看到日志时,它显示http://foo.bar.com:2181(active mq DNS name) 无法访问或到达。如果我们在属性文件中将 activemq 域名更改为 IP 地址,它就可以正常工作。

我认为 kubernetes 中没有进行名称解析,您能帮我如何自动完成这项工作吗?因为我不能总是在有新部署时更改属性文件。

0 投票
1 回答
41 浏览

kubernetes - Kubernetes 最佳实践 - 将任意数量的 pod 公开到互联网

我的应用程序需要任意数量的 pod 才能将它们的服务公开到 Internet。我不确定允许从外部服务器(我们称其为客户端)发现这些 pod 的最佳方法是什么。

该工作流由一个外部服务器(客户端)组成,该服务器请求创建一个“车间”部署,并提供一个车间 ID。然后 Kubernetes 创建部署,并在其旁边创建一个 Pod,客户端将使用该 API 在 Pod 上的容器中运行。

客户端应该能够看到所有 Workshop pod 实例,并且必须能够识别哪个 Pod 属于哪个 Workshop。

我已经简化了实际的 kubernetes 基础设施。它使用 CRD 和操作符来设置更复杂的基础设施,但只有 pod 的 API 及其可发现性应该是客户端关心的。解决这个问题的最佳方法是什么?

0 投票
2 回答
687 浏览

kubernetes - Kubernetes Ingress 网络策略按预期工作,egress 阻塞了所有流量

我已经从这里在 EKS 上安装了 Calico 。

我有两个命名空间,foo 和 bar,都标有“目的”标签,并且每个都包含一个应用程序 pod。

当我将以下 Ingress-only 策略导入 foo 命名空间时,它完全按预期工作;其他测试 pod 无法连接到 foo-app,但 bar-app 可以。

但是,当我导入包含入口和出口规则的策略时,它会完全关闭到 pod 的网络。我什至无法从 bar-app ping foo-app pod IP。

在删除并系统地重新添加部分策略之后,肯定是namespaceSelector在出口中添加条目会破坏它。

集群上没有其他网络策略。

如果没有直接明显的原因说明为什么会发生这种情况;除了在工作节点上搜索 netfilter 规则之外:有没有有效的方法来调试这个?

0 投票
1 回答
59 浏览

kubernetes - Kubernetes pod 到 pod 集群网络策略

使用 k8s 网络策略或 calico,我可以只将这些工具用于 pod 到 pod 集群网络策略。我已经有外部集群策略的网络规则。

例如,如果我应用此印花布规则:

在此示例中,我允许从应用 B 到应用 A 的流量。但这将禁止所有其他进入 A 的流量。是否可以仅将此规则从 pod 应用到 pod ?

0 投票
2 回答
257 浏览

istio - 无法使用拒绝所有 GlobalNetworkPolicy 通过 Istio 连接到 EKS 上的应用程序

我的设置:使用 Calico 和 Istio 1.5 运行 EKS 1.14。

试图让示例 bookinfo 使用特定的 NetworkPolicies 运行。

我应用了拒绝所有流量的 GlobalNetworkPolicy:

我还为 Istio 添加了一个 GlobalNetworkPolicy 到命名空间和命名空间内的流量:

和一个允许 istio 系统上的所有入口和出口的 NetworkPolicy

还有一个 NetworkPolicy 允许流量到端口 80 和 443 上的入口网关。我知道这个是多余的,但我希望将前一个减少到只有必要的入口。

还有一些其他不相关的 NetworkPolicies(访问 kube-dns、metrics-server)。部署bookinfo可以使用和不使用策略,并且与部署网关相同。

组件之间的连接有效(我可以执行到一个 pod 并连接到其他 pod)。但是,当我尝试使用策略通过网关访问产品页面时,我什么也得不到,而不是没有策略的情况下我得到的 HTML。

我是否错过了一些应该允许的流量?我应该为主节点或其他地方的负载均衡器制定策略吗?

编辑:如果我允许所有进入 istio-system 和命名空间,它就可以工作。所以我想我只是错过了命名空间中的其他一些入口,有没有办法将它限制为负载均衡器?