问题标签 [cni]

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 投票
0 回答
185 浏览

networking - Pod 与外部世界的 IP 地址重叠问题

我们在 Azure (AKS) 上有一个带有 Azure CNI 网络的 K8s 集群。我们用这个 CIDR 指定了 IP 范围:10.131.0.0/22

10.131.0.0因此和之间的 Pod 的 IP 范围10.131.3.255。这些是我的内部 IP。直到这里没有问题。


我想举一个简化的例子来表达我的问题:

让我们想象pod1在这个集群中调用了一个 pod。在这个吊舱内,我想访问外面的世界。像curl myapi.commyapi.com是一个公共网站,它与这个集群无关)。

还可以想象myapi.com有一个公共 IP 10.131.0.166,它与我的内部 IP 地址范围重叠。如何强制pod1访问这个公共 IP,而不是在这个集群中路由另一个 pod?

0 投票
2 回答
1071 浏览

kubernetes - kubernetes中calico CNI如何找出每个节点分配了什么podcidr

使用calico CNI时是否有任何直接命令来获取分配给每个节点的podcidr。

我正在寻找分配给每个节点的确切网络和网络掩码。我无法kubectl get nodes通过注释podCIDR value或注释获取它projectcalico.org/IPv4VXLANTunnelAddr。看起来注释也会根据 calico 使用的 VXLAN 或 IPIP 隧道而有所不同。

尝试通过 podCIDR 密钥从节点获取。得到以下输出。这不是分配给节点的网络。

试图通过印花布注释来获取它。能够找到网络,但网络掩码丢失。

试图通过 calico pod 获取它。从 calico 日志中找到确切的网络和网络掩码,即192.168.33.64/26 。

但我想避免查看每个节点上的 calico pod 日志。有没有更好的方法可以通过单个命令找到分配给每个节点的 podcidr。

0 投票
1 回答
532 浏览

kubernetes - 使用带有位置 ipam 的 Macvlan CNI 插件创建的多个网络 - 跨节点通信未发生

我在 Google Cloud Platform 之上建立了 openshift 容器平台。我使用 Multus 将多个网络连接到 pod。

我在 ipam 中使用 Macvlan CNI 和 whereabouts 而不是 static 以避免 IP 冲突。我部署了三个 pod,两个在同一个节点,一个在另一个节点。pod 被分配了 net1 接口,没有 IP 冲突和唯一的 mac 地址。

问题是如果 Pod 在同一个节点中,Pod 通信是通过 ping 发生的。但是跨节点,没有发生 pod 通信,显示目标主机不可达。如果我使用命令“ip route get net1ipaddress”检查路由,还有一件事,路由是存在的。

例如 ip route 得到 192.168.1.1

192.168.1.1 通过 10.0.32.1 开发 ens4 src 10.0.32.3 uid 0 缓存

但是没有发生交流。我该如何进一步检查?

非常感谢。

0 投票
0 回答
116 浏览

networking - 启用 Calico Networking 和 vxlan 模式的 Kubernetes 集群

我有一个 kubernetes 集群,我试图只打开所需的必要端口,不幸的是,我尝试的每个端口配置都失败了,我找到的唯一解决方案是为子网 10.0.0.0/ 内的 kubernetes 节点打开所有流量 TCP/UDP 端口/ 16

有任何想法吗?

0 投票
1 回答
345 浏览

kubernetes - Kubernetes POD 在不同主机上运行,​​无法建立 TCP 连接

ipvs我有 Kubernetes 1.20.1 集群,配置了模式的单主和单工作者。使用印花布 CNI calico/cni:v3.16.14.18.0-240.10在禁用 firewalld 和 selinux的 OS RHEL 8 内核上运行的集群。

在 master 上运行一个netshootpod ( ),在工作节点上运行另一个 pod ( )。10.1.30.13010.3.65.132

  1. 我可以双向 ping 两个 pod
  2. 如果在 Web 服务器模式下运行 nc 命令,则连接不工作。我试图在两台服务器上运行 nginx,但无法从另一台服务器获取 http 流量。

在两台服务器上运行 tcpdumptcpdump -vv -nn -XX -i any host <PODIP>我可以看到 ping 流量流向两个节点,但 TCP 流量没有到达另一个节点。

iptables -vL | grep DROP命令未显示两个节点上的任何数据包丢失。

我不知道 TCP 流量在哪里丢失,需要一些技巧来解决这个问题。

主节点 iptables-save 命令输出

Worker iptables-保存输出

0 投票
1 回答
807 浏览

docker - Kubernetes Multus:不同节点上的 pod 之间没有 macvlan 连接(无法 ping)

我有一个问题,我有一个带有两个工作节点和一个主节点的 Kubernetes 集群。让我们对它们进行 W1、W2 和 M 的实验。我有一个部署,它创建了一组 CentOS7 pod,每个工人都有一些。我使用 Multus,以便在每个 pod 上都有一个额外的 net1 接口,该接口映射到 worker 上的 eth1。所有的 pod 都有 net1 连接到同一个名为“up-net”的 macvlan。

在 W1 和 W2 上,我可以在同一节点上运行的 pod 之间 ping,但 W1 中的 pod 无法 ping W2 中的另一个 pod,反之亦然。ping eth0 上的标准 kube 网络在所有情况下都有效。只是macvlan有这个问题。

简而言之,这就是问题所在。现在让我更详细地描述我们正在使用的设置。

我们有一个带有 3 台物理服务器的实验室,我们在上面部署了 Kolla(它是安装在 Kubernets 上的 Openstack)。在这个 Openstack 安装中,我再次尝试设置 Kubernetes 安装,主节点和工作节点托管在 Openstack 虚拟机(即 W1、W2、M)中,VM 运行在 Openstack 中。这意味着我们总共有三层虚拟化。只是想提一下,如果有人知道基于此的任何潜在线索。但我没有遇到任何我认为与虚拟化有关的问题。还可以提一下,这些 vm 有两个接口 eth0 和 eth1。Eth1 是我想要 macvlan 的设备。最后,对于虚拟机和物理服务器,操作系统都是 CentOS7。

关于 Kubernetes 安装:

  • Kubernetes (overcloud) 是使用 Kubespray 安装的。
  • 我编辑了主机文件,使 node1 成为主 node2 W1 和 node3 W2。
  • 我将 kube_network_plugin_multus 设置为 true 。
  • Whereabouts 用于为 net1 接口分配 IP 地址。
  • 我使用 calico 作为网络驱动程序。

以下是用于 macvlan 网络的配置:

这是 Pod 的配置:

我没有明确指定他们最终在哪个工作人员上,但通常负载均衡器会平均分配四个 pod。

此外,这里是 Kube 系统 pod:

现在已经对我运行的实验解释了设置。

考虑工人 1 (W1) 上的 pod P1a 和 P1b。在工人 2 (W2) 上有 P2a 和 P2b。我使用 ping 和 tcpdump 来访问连接。

从 P1a 到 P1b 的 Ping 工作正常,tcpdump 告诉我 W1 的 eth1 设备上有 icmp 流量。W2也是如此。

但是,当我从 P1a ping P2a 时,它看起来如下所示:

然而,一个有趣的线索是,在这种情况下,icmp 数据包最终会出现在 pod 的 lo 接口上:

你认为我的路由表可能有问题吗?我什么都看不到,但我对网络有点陌生:

最后,列出我尝试过但不起作用的事情的清单:

  • 在 W1、W2 和 M 上的 eth1 上将 eth1 设置为混杂模式。
  • 为 ipv4 禁用了 rp_filter(因为我发现 macvlan 对 macaddresses 做了奇怪的事情)。
0 投票
0 回答
1237 浏览

dns - 在 kubectl 日志之后,错误:dial tcp: lookup istio on 127.0.0.11:53: no such host

我用两台电脑作为kubernetes的节点机。当我想通过kubectl查询日志时,出现如下错误,“no such host:

我的 cni 配置是:

我在 istio pc 中使用了 dig 命令到 istio:

但是在我使用 127.0.0.11 之后,它显示连接超时;无法访问任何服务器。我可以ping 127.0.0.11 是docker DNS 问题吗?

0 投票
0 回答
112 浏览

google-cloud-platform - GKE 流量整形或带宽限制

有什么方法可以限制 pod 可以在 GKE 上使用的出口带宽量?

我找到了CNI Bandwidth Plugin,但是否可以将它与 GKE 一起使用。如果是这样,怎么做?

0 投票
1 回答
433 浏览

kubernetes - Kubernetes - 法兰绒 CNI 上的 libnftnl.so.11.3.0 中的段错误

我有一个自我管理的 Kubernetes 集群,由一个主节点和 3 个工作节点组成。我在集群中使用集群网络接口法兰绒

在我所有的机器上,我都可以看到以下类型的内核消息:

我缩小了范围,即消息源自 kube-flannel-ds pod。我有这样的日志消息:

有人可以解释这种消息的含义吗?这可能是硬件问题吗?将 flannel 切换到另一个 kuberentes 容器网络接口 (CNI) 是否有意义 - 例如Calico

0 投票
1 回答
630 浏览

debian - cni配置的podman安装问题

我只是从 reposirotyr git clone,并配置所有环境,最后在我安装之后,我的 podman 版本 printf 这个:

我的 /etc/cni/net.d/99-loopback.conf 内容是:

有人可以帮助我吗?tks。