问题标签 [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.
nginx - Kubernetes 网络策略未按预期工作
我有一个 k8s 集群,它将工作节点分布在 6 个可用区中,因此,出口流量通过 6 个 nat 网关路由。我的要求是应用程序“xyz”的所有出口流量都应仅通过 AZ-A 的 nat 网关路由。因此,作为一个解决方案,我在同一个命名空间中创建了一个 nginx 代理实例,放置一个关联规则以将其仅绑定到 AZ - A,并考虑使用网络策略将出口流量从xyz
pod 路由到该代理实例。但似乎网络策略正在阻止整个出口流量。下面是出口 NW 政策的代码,看起来不错。
应用 NW 策略后,我正在curl ifconfig.co
xyz pod 上进行测试。它有时会给出以下错误和超时:
我想我在这里遗漏了一些东西。任何人都可以请我对此提供任何见解吗?或更好地解决此要求。
kubernetes - 如何在 kubernetes 中使用单个服务设置对多个节点的访问?
我正在尝试使用单个服务 yaml 设置对多个节点上的 Pod 的访问。Pod 都具有相同的标签(例如label:app
),但分布在多个节点上,而不是单个节点上。
据我所知,我可以设置一个 Service 来通过 NodePort 转发对 Pod 的访问,例如:
其中访问节点上的端口 30000 会转发到 Pod 上的端口 5000。
如果我在多个节点上有 pod,客户端是否可以访问单个端点(例如服务本身)以循环方式获取任何 pod?或者客户端是否需要使用该节点的 IP 访问特定节点上的一组 pod,如xx.xx.xx.xx:30000
?
kubernetes - kube-controller-manager 和 kube-scheduler 重启后 kubelet 无法获取节点状态
我的 k8s1.12.8
集群(通过 kops 创建)已经运行了 6 个多月。最近,一些事情导致主节点kube-scheduler
和kube-controller-manager
主节点都死机并重新启动:
从那以后kube-scheduler
并kube-controller-manager
重新启动,kubelet 完全无法获取或更新任何节点状态:
集群在此状态下完全无法执行任何更新。
- 什么会导致主节点失去与这样的节点的连接?
- 第一个日志输出中的第二行“截断的主机名..”是问题的潜在根源吗?
- 如何进一步诊断导致获取/更新节点操作失败的实际原因?
kubernetes - 有没有办法让一个 pod 通过另一个运行 vpn 客户端的 pod 路由其流量?
我有一个裸机 Kubernetes 集群,我想在一个 pod 中运行一个 vpn 客户端,并让我的其他 pod 通过该 pod vpn 连接将它们的连接路由到外部互联网。有可能做到这一点吗?如果是这样,怎么做?
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
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 在尝试访问未打开的端口时立即失败。
mysql - 为什么我的 externalName 类型的服务配置在 Kubernetes 中不起作用?
我在每个命名空间中创建了两个命名空间和服务:
- 命名空间:应用层
- 休息应用
- 数据库服务外部名称
- 命名空间:数据层
- 数据库服务
当我尝试从 连接到 DB Service 中的 MySQL 数据库时rest-app
,出现错误:
MySql.Data.MySqlClient.MySqlException (0x80004005):无法连接到任何指定的 MySQL 主机。---> System.AggregateException:发生一个或多个错误。(名称或服务未知)
我在日志中打印出来,它正确地具有db-service
服务名称,并且具有正确的用户/通行证。
这是我定义的:
数据库服务
数据库服务外部名称
休息应用
问题:
- 在应用层命名空间中创建 externalName 是否正确?
- 我需要以不同的方式定义它吗?
- docker容器中的C#应用程序不能引用
db-service
externalName服务的名称吗?
kubernetes - kubernetes 服务中可以暴露的端口数量是否有任何限制?
我正在尝试在 200 个奇怪的端口上公开服务。这是示例服务 yaml:
应用此 yaml 后,会创建服务,但由于ip:port
连接被拒绝错误,无法访问该组合。经过进一步调查,我发现 iptables 过滤器链 KUBE-EXTERNAL-SERVICES 中有一些 REJECT 条目用于我暴露的端口。
IPTABLES 拒绝规则:
我想了解:
- 为什么会出现这些 REJECT 规则?
- 这不可能通过服务公开大量端口吗?
- 可以通过服务公开的端口数量是否有限制?
ubuntu - 将 Kubernetes 网络路由更改为互联网
你知道如何为 Kubernetes 配置默认网络路由来访问互联网吗?我的集群节点(带有 netplan 的 Ubuntu 18.04)有 2 个 IP 暴露在互联网上。当我安装 Kubernetes 时,第一个 IP 是默认路由,我将默认路由更改为系统上的第二个 IP。但是 Kubernetes 中的 pod 继续使用第一个来上网。它不使用系统配置。我有使用 Rancher 部署的带有 Canal 网络的 Kubernetes 1.17.5。我不知道是否应该更改配置或编辑 docker0 的 iptables 以告诉 Kubernetes 使用哪个路由。
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 不能。)