问题标签 [kubernetes-networking]

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 投票
2 回答
475 浏览

nginx - Kubernetes 网络策略未按预期工作

我有一个 k8s 集群,它将工作节点分布在 6 个可用区中,因此,出口流量通过 6 个 nat 网关路由。我的要求是应用程序“xyz”的所有出口流量都应仅通过 AZ-A 的 nat 网关路由。因此,作为一个解决方案,我在同一个命名空间中创建了一个 nginx 代理实例,放置一个关联规则以将其仅绑定到 AZ - A,并考虑使用网络策略将出口流量从xyzpod 路由到该代理实例。但似乎网络策略正在阻止整个出口流量。下面是出口 NW 政策的代码,看起来不错。

应用 NW 策略后,我正在curl ifconfig.coxyz pod 上进行测试。它有时会给出以下错误和超时:

我想我在这里遗漏了一些东西。任何人都可以请我对此提供任何见解吗?或更好地解决此要求。

0 投票
2 回答
1002 浏览

kubernetes - 如何在 kubernetes 中使用单个服务设置对多个节点的访问?

我正在尝试使用单个服务 yaml 设置对多个节点上的 Pod 的访问。Pod 都具有相同的标签(例如label:app),但分布在多个节点上,而不是单个节点上。

据我所知,我可以设置一个 Service 来通过 NodePort 转发对 Pod 的访问,例如:

其中访问节点上的端口 30000 会转发到 Pod 上的端口 5000。

如果我在多个节点上有 pod,客户端是否可以访问单个端点(例如服务本身)以循环方式获取任何 pod?或者客户端是否需要使用该节点的 IP 访问特定节点上的一组 pod,如xx.xx.xx.xx:30000

0 投票
1 回答
655 浏览

kubernetes - kube-controller-manager 和 kube-scheduler 重启后 kubelet 无法获取节点状态

我的 k8s1.12.8集群(通过 kops 创建)已经运行了 6 个多月。最近,一些事情导致主节点kube-schedulerkube-controller-manager主节点都死机并重新启动:

从那以后kube-schedulerkube-controller-manager重新启动,kubelet 完全无法获取或更新任何节点状态:

集群在此状态下完全无法执行任何更新。

  • 什么会导致主节点失去与这样的节点的连接?
  • 第一个日志输出中的第二行“截断的主机名..”是问题的潜在根源吗?
  • 如何进一步诊断导致获取/更新节点操作失败的实际原因?
0 投票
0 回答
179 浏览

kubernetes - 有没有办法让一个 pod 通过另一个运行 vpn 客户端的 pod 路由其流量?

我有一个裸机 Kubernetes 集群,我想在一个 pod 中运行一个 vpn 客户端,并让我的其他 pod 通过该 pod vpn 连接将它们的连接路由到外部互联网。有可能做到这一点吗?如果是这样,怎么做?

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 回答
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 回答
373 浏览

mysql - 为什么我的 externalName 类型的服务配置在 Kubernetes 中不起作用?

我在每个命名空间中创建了两个命名空间和服务:

  • 命名空间:应用层
    • 休息应用
    • 数据库服务外部名称
  • 命名空间:数据层
    • 数据库服务

当我尝试从 连接到 DB Service 中的 MySQL 数据库时rest-app,出现错误:

MySql.Data.MySqlClient.MySqlException (0x80004005):无法连接到任何指定的 MySQL 主机。---> System.AggregateException:发生一个或多个错误。(名称或服务未知)

我在日志中打印出来,它正确地具有db-service服务名称,并且具有正确的用户/通行证。

这是我定义的:

数据库服务

数据库服务外部名称

休息应用

问题:

  • 在应用层命名空间中创建 externalName 是否正确?
  • 我需要以不同的方式定义它吗?
  • docker容器中的C#应用程序不能引用db-serviceexternalName服务的名称吗?
0 投票
1 回答
392 浏览

kubernetes - kubernetes 服务中可以暴露的端口数量是否有任何限制?

我正在尝试在 200 个奇怪的端口上公开服务。这是示例服务 yaml:

应用此 yaml 后,会创建服务,但由于ip:port连接被拒绝错误,无法访问该组合。经过进一步调查,我发现 iptables 过滤器链 KUBE-EXTERNAL-SERVICES 中有一些 REJECT 条目用于我暴露的端口。

IPTABLES 拒绝规则

我想了解:

  1. 为什么会出现这些 REJECT 规则?
  2. 这不可能通过服务公开大量端口吗?
  3. 可以通过服务公开的端口数量是否有限制?
0 投票
1 回答
403 浏览

ubuntu - 将 Kubernetes 网络路由更改为互联网

你知道如何为 Kubernetes 配置默认网络路由来访问互联网吗?我的集群节点(带有 netplan 的 Ubuntu 18.04)有 2 个 IP 暴露在互联网上。当我安装 Kubernetes 时,第一个 IP 是默认路由,我将默认路由更改为系统上的第二个 IP。但是 Kubernetes 中的 pod 继续使用第一个来上网。它不使用系统配置。我有使用 Rancher 部署的带有 Canal 网络的 Kubernetes 1.17.5。我不知道是否应该更改配置或编辑 docker0 的 iptables 以告诉 Kubernetes 使用哪个路由。

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 不能。)