问题标签 [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.
cassandra - 如果 pod 在 kubernetes 中重新启动/失败,如何防止在 pod 中运行的多个容器的 IP 交换?
我们已经在 Kubernetes 中建立了一个 Cassandra 集群。我们正在使用 statefulSet 和无头服务。并计划实施多机架功能。
为此,我想在一个 pod 中部署多个容器,并计划为此添加关联规则。
但我能想到的一个可能的问题是
在 Kubernetes 中,IP 可以在重启/失败期间更改。
因此,如果我在一个 pod 中有 2 个容器,并且我的 pod 出现故障。当 pod 出现时,两个容器可能会交换它们的 IP,这将导致状态不一致。由于这 2 个容器的主要令牌范围发生了更改,并且其他 Cassandra 节点没有更新有关此更改的信息。
如果两个容器都获得了新的 IP,那么我看不到任何问题,因为其他 Cassandra 节点会自行更新。我在这一点上是对的吗?
如何在重启/失败期间防止此 IP 交换?
是否有任何文件可以帮助我实现多机架功能?
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的输出
您可以看到我既无法连接到在命名空间a或b上运行的服务
我应该怎么做才能允许从命名空间a到命名空间b的流量,反之亦然?
任何建议或修改。
谢谢
编辑-1
网络政策的描述,
np-a
np-b
服务说明
和
的输出kubectl get pods -n kube-system
elasticsearch - 带有 gke 网络策略的 Elastic.co APM
我有 gke 集群,并且在 elastic.co 上有弹性搜索部署。现在在我的 gke 集群上,我为每个 pod 设置了带有出口和入口规则的网络策略。我的问题是,为了使用弹性 APM,我需要允许出口到我的弹性部署。
任何人都知道如何做到这一点?我正在考虑 gcp 实例上的 elastic.co 的 IP 列表,以便能够在我的出口规则中将它们列入白名单,或者我的 gke 集群和弹性 apm 之间的某种代理。
我知道一个解决方案可以是在 gcp 上拥有一个本地弹性集群,但我不喜欢这样。
kubernetes - Kubernetes Pod 无法建立 RTSP 会话,UDP 端口不可达
我正在尝试通过 RTSP(使用 ffmpeg)在我的 pod 和相机之间建立连接。
我的容器在本地和服务器中运行时可以建立连接。
但是,在 Kubernetes 中,看起来能够访问和识别摄像头服务器,但它无法初始化流。尝试连接时,我在容器上执行了 tcpdump,收到以下信息:
**CAMERA_SERVER_IP** -> 是摄像机服务器 IP 地址
**POD_NAME** -> 是我在 kubernetes 中的 pod 名称。
当我在本地尝试时,第一个 UDP 端口也失败了,但第二个可以建立连接和流。
我认为这与端口通信有关,但我对应该尝试或测试的内容有点迷茫。
谢谢!
更新*
其实我发现了一些奇怪的东西。
我再次尝试启动连接,并分析了来自tcpdump和netstat -tulpn的日志。
在本地连接时,netstat识别出两个 UDP 连接的创建。并且tcpdump显示 ffmpeg 正在尝试使用来自 netstat 的相同 UDP 端口从服务器建立连接
但是,在 Kubernetes 的 pod 中,netstat 上打开的端口与 ffmpeg 尝试连接的端口不同(使用tcpdump验证)。
我认为这是错误,因为 ffmpeg 在尝试访问未打开的端口时立即失败。
kubernetes - 如何在 kubernetes 网络策略中将 digitalocean 负载均衡器列入白名单?
我已经在我的命名空间中配置了下一个网络策略:
但在那之后,用于 nginx-ingress 的托管负载均衡器已关闭。如何在网络策略中将托管负载均衡器列入白名单?
我已经尝试将 VPC CIDR 和负载均衡器公共 IP 列入白名单,但没有帮助
我想要实现的目标:“测试”命名空间必须允许“ci”和“监控”命名空间,但同时我想允许来自 Digitalocean 负载均衡器的流量。
您想从哪个命名空间发送流量?我的问题仅与入口流量有关,我们希望允许来自 digitalocean 负载均衡器的传入流量
你的 nginx 入口在哪里?在“测试”命名空间中
你想让流量从你的 nginx-ingress pod 到另一个命名空间上的 pod 吗?不,我们只需要“测试”命名空间内的流量
应该将哪些内容和位置准确列入白名单DigitalOcean 负载均衡器应在“测试”命名空间网络策略中列入白名单
kubernetes - 使用端口隔离命名空间和 pod 的网络策略
Kubernetes V19
创建一个名为 allow-port-from-namespace 的新 NetworkPolicy,允许内部现有命名空间中的 Pod 连接到同一命名空间中其他 Pod 的 80 端口。
确保新的 NetworkPolicy:
不允许访问未侦听端口 80 的 Pod 不允许来自不在命名空间内部的 Pod 访问
我需要知道我是否可以在不向 namspace 和 pod 添加标签的情况下做到这一点?
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
实现我想要的粒度。
我已经尝试了以下to
s:
但是这些规则会导致到 k8s-metadata-proxy 的流量被阻止。
问题
如何to
在 a 的出口规则部分选择 k8s-metadata-proxy DaemonSet networking.k8s.io/v1/NetworkPolicy
?
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 不能。)
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 集群中都不匹配:
任何帮助,将不胜感激。