问题标签 [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 回答
93 浏览

cassandra - 如果 pod 在 kubernetes 中重新启动/失败,如何防止在 pod 中运行的多个容器的 IP 交换?

我们已经在 Kubernetes 中建立了一个 Cassandra 集群。我们正在使用 statefulSet 和无头服务。并计划实施多机架功能。

为此,我想在一个 pod 中部署多个容器,并计划为此添加关联规则。

但我能想到的一个可能的问题是

在 Kubernetes 中,IP 可以在重启/失败期间更改。

因此,如果我在一个 pod 中有 2 个容器,并且我的 pod 出现故障。当 pod 出现时,两个容器可能会交换它们的 IP,这将导致状态不一致。由于这 2 个容器的主要令牌范围发生了更改,并且其他 Cassandra 节点没有更新有关此更改的信息。

如果两个容器都获得了新的 IP,那么我看不到任何问题,因为其他 Cassandra 节点会自行更新。我在这一点上是对的吗?

如何在重启/失败期间防止此 IP 交换?

是否有任何文件可以帮助我实现多机架功能?

0 投票
1 回答
426 浏览

kubernetes - Kubernetes 网络策略。无法“wget”到在不同命名空间上运行的 pod?

我创建了两个名为“a”和“b”的命名空间

我有如下文件结构..

on folder a

nginx-deployment.yml

网络策略.yml

并使用两个 yml 文件kubectl apply -f

on folder b

nginx-deployment.yml

网络策略.yml

并使用两个 yml 文件kubectl apply -f

问题

所以基本上我想允许从命名空间a到命名空间b的流量,反之亦然。

我已经使用

我在命名空间中创建了busybox a using

我已经使用 exec 进入了busybox

现在这是wget的输出

您可以看到我既无法连接到在命名空间ab上运行的服务

我应该怎么做才能允许从命名空间a到命名空间b的流量,反之亦然?

任何建议或修改。

谢谢

编辑-1

网络政策的描述, np-a

np-b

服务说明

的输出kubectl get pods -n kube-system

0 投票
1 回答
60 浏览

elasticsearch - 带有 gke 网络策略的 Elastic.co APM

我有 gke 集群,并且在 elastic.co 上有弹性搜索部署。现在在我的 gke 集群上,我为每个 pod 设置了带有出口和入口规则的网络策略。我的问题是,为了使用弹性 APM,我需要允许出口到我的弹性部署。

任何人都知道如何做到这一点?我正在考虑 gcp 实例上的 elastic.co 的 IP 列表,以便能够在我的出口规则中将它们列入白名单,或者我的 gke 集群和弹性 apm 之间的某种代理。

我知道一个解决方案可以是在 gcp 上拥有一个本地弹性集群,但我不喜欢这样。

0 投票
1 回答
658 浏览

kubernetes - Kubernetes Pod 无法建立 RTSP 会话,UDP 端口不可达

我正在尝试通过 RTSP(使用 ffmpeg)在我的 pod 和相机之间建立连接。

我的容器在本地和服务器中运行时可以建立连接。

但是,在 Kubernetes 中,看起来能够访问和识别摄像头服务器,但它无法初始化流。尝试连接时,我在容器上执行了 tcpdump,收到以下信息:

**CAMERA_SERVER_IP** -> 是摄像机服务器 IP 地址

**POD_NAME** -> 是我在 kubernetes 中的 pod 名称。

当我在本地尝试时,第一个 UDP 端口也失败了,但第二个可以建立连接和流。

我认为这与端口通信有关,但我对应该尝试或测试的内容有点迷茫。

谢谢!

更新*

其实我发现了一些奇怪的东西。

我再次尝试启动连接,并分析了来自tcpdumpnetstat -tulpn的日志。

在本地连接时,netstat识别出两个 UDP 连接的创建。并且tcpdump显示 ffmpeg 正在尝试使用来自 netstat 的相同 UDP 端口从服务器建立连接

但是,在 Kubernetes 的 pod 中,netstat 上打开的端口与 ffmpeg 尝试连接的端口不同(使用tcpdump验证)。

我认为这是错误,因为 ffmpeg 在尝试访问未打开的端口时立即失败。

0 投票
1 回答
500 浏览

kubernetes - 如何在 kubernetes 网络策略中将 digitalocean 负载均衡器列入白名单?

我已经在我的命名空间中配置了下一个网络策略:

但在那之后,用于 nginx-ingress 的托管负载均衡器已关闭。如何在网络策略中将托管负载均衡器列入白名单?

我已经尝试将 VPC CIDR 和负载均衡器公共 IP 列入白名单,但没有帮助

我想要实现的目标:“测试”命名空间必须允许“ci”和“监控”命名空间,但同时我想允许来自 Digitalocean 负载均衡器的流量。

您想从哪个命名空间发送流量?我的问题仅与入口流量有关,我们希望允许来自 digitalocean 负载均衡器的传入流量

你的 nginx 入口在哪里?在“测试”命名空间中

你想让流量从你的 nginx-ingress pod 到另一个命名空间上的 pod 吗?不,我们只需要“测试”命名空间内的流量

应该将哪些内容和位置准确列入白名单DigitalOcean 负载均衡器应在“测试”命名空间网络策略中列入白名单

0 投票
5 回答
1557 浏览

kubernetes - 使用端口隔离命名空间和 pod 的网络策略

Kubernetes V19

创建一个名为 allow-port-from-namespace 的新 NetworkPolicy,允许内部现有命名空间中的 Pod 连接到同一命名空间中其他 Pod 的 80 端口。

确保新的 NetworkPolicy:

不允许访问未侦听端口 80 的 Pod 不允许来自不在命名空间内部的 Pod 访问

我需要知道我是否可以在不向 namspace 和 pod 添加标签的情况下做到这一点?

0 投票
1 回答
136 浏览

google-kubernetes-engine - 允许其他节点 IP 的 GKE Kubernetes 网络策略

我有一个具有 2 个以上节点的 GKE 集群(1.16)和一个 GKE Ingress HTTPS 负载均衡器。
我在上面部署了几个命名空间。
我想拒绝命名空间之间的所有流量,所以我使用的是在此处找到的配方。
但是,根据此文档(我的 externalTrafficPolicy 使用的是默认值Cluster):

如果 externalTrafficPolicy 未设置为 Local,则网络策略还必须允许来自集群中其他节点 IP 的连接。

如何在我的 NetworkPolicy 定义中允许来自集群中其他节点 IP 的连接?
我目前的定义是:

0 投票
1 回答
496 浏览

google-kubernetes-engine - Google Kubernetes Engine:允许出口到 k8s-metadata-proxy 的 NetworkPolicy

语境

我有一个启用了Workload Identity的 Google Kubernetes Engine (GKE) 集群。作为 Workload Identity 的一部分,k8s-metadata-proxy DaemonSet 在集群上运行。我有一个命名空间my-namespace,并且想要拒绝命名空间中 pod 的所有出口流量,但到 k8s-metadata-proxy DaemonSet 的出口除外。因此,我有以下 NetworkPolicy:

问题

NetworkPolicy 过于宽泛,因为它允许将 TCP 流量出口到端口 988 上的任何主机,而不仅仅是出口到 k8s-metadata-proxy DaemonSet,但我似乎无法找到一种方法来指定.spec.egress[0].to实现我想要的粒度。

我已经尝试了以下tos:

但是这些规则会导致到 k8s-metadata-proxy 的流量被阻止。

问题

如何to在 a 的出口规则部分选择 k8s-metadata-proxy DaemonSet networking.k8s.io/v1/NetworkPolicy

0 投票
1 回答
739 浏览

kubernetes - 如何使用网络策略拒绝所有命名空间的出口,并允许来自 kubernetes 中某些命名空间的入口

上下文:我将 EKS 与 calico 插件一起用于网络策略和托管节点组。

我有一个名为“simon-test”的命名空间,我想拒绝从命名空间到其他人的所有出口(因此 simon-test 中的 pod 将无法看到其他命名空间中的其他 pod)。我尝试使用以下网络策略(似乎按预期工作)来做到这一点:

但这也阻止了命名空间内的所有内部网络。所以为了解决这个问题,我创建了另一个网络策略,它应该允许命名空间内的所有流量:

但这并不能解决问题,因为命名空间内仍然没有网络。我很好奇为什么我仍然可以从另一个命名空间中的另一个 pod 到达“simon-test”(我nc -nlvp 9999在“simon-test”中的一个 pod 中运行,并且nc -z ip-of-pod-in-simon-test-ns 9999从另一个命名空间的一个 pod 中运行它可以到达它,但是当 ping来自 simon-test 的 pod 不能。)

0 投票
1 回答
485 浏览

kubernetes - 如何创建匹配 Kubernetes API 的网络策略

在我们的 EKS Kubernetes 集群中,我们有一个通用的 calico 网络策略来禁止所有流量。然后我们添加网络策略以允许所有流量。

我们的一个 pod 需要与 Kubernetes API 通信,但除了非常广泛的 ipBlock 选择器之外,我似乎无法将该流量与其他任何东西相匹配。还有其他方法吗?

这目前有效,但提供了过于广泛的访问权限:

在 AWS EKS 中,我看不到控制平面 pod,但在我的 RPI 集群中,我可以。在 RPI 集群中,API pod 有标签“component=kube-apiserver,tier=control-plane”,所以我也尝试使用带有这些标签的 podSelector,但它在 EKS 或 RPI 集群中都不匹配:

任何帮助,将不胜感激。