问题标签 [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 投票
1 回答
8042 浏览

kubernetes - Kubernetes NetworkPlugin cni 设置 pod 失败

关于我使用的以下描述 pod 的日志,我的 pod 由于“FailedCreatePodSandBox”而陷入挂起状态</p>

有一些关键说明:-我使用印花布作为 CNI。- 这个日志重复多次,我只是把这个作为样本过去。- ip 192.168.90.152 属于入口,129 属于 k8s 的监控 NS 中的分蘖,我不知道为什么 k8s 会尝试将其绑定到另一个 pod。

我用谷歌搜索了这个问题,我在这里什么也没有。

有人可以帮助解决这个问题吗?

0 投票
1 回答
6654 浏览

kubernetes - kubernetes:如何查看或列出已安装的 CNI 插件?

假设,我刚刚安装了一个 Kubernetes CNI 插件,例如weave-net

如何查看或列出已安装的 CNI 插件?

安装后我怎么知道它正在运行?或者如果我kubectl delete是插件,我怎么知道它被删除了?

安装插件后,我有点期待看到为这个插件创建的一些对象。因此,如果我想删除它,那么我不必记住我用来安装的确切 URL,我可以查找对象名称并删除它。

0 投票
0 回答
104 浏览

docker - kube pod 上的网络问题

  1. 首先,我了解 k8s 以及它如何与他们的所有东西一起工作;
  2. 其次,我需要介绍一下我的应用程序以及它如何在 k8s 上运行
  3. 第三,我要问我的问题:

这个应用程序由三个 Pod 组成,每个 Pod 都有自己的服务:

这个应用程序以这种方式工作:

当请求进入示例应用程序时,此应用程序将请求存储为 Redis 中的作业,同时队列监视 Redis 以获取未处理的作业并处理它们(例如发送电子邮件)。

现在我的问题:

队列 pod 没有理由,没有时间顺序,也没有日志停止工作,需要在 k8s 日志中再次告诉您看不到任何错误或警告,这主要就像卡住并且什么也不做!!这个应用程序在 minikube 和 k8s 之前的 VM 上运行良好。所以每次我删除队列 Pod 时,新创建的 Pod 开始正常工作并处理来自 Redis 的作业。

我使用基准工具在 minikube 上测试了这个应用程序(使用 ab 命令从集群外部发送请求)没有问题也没有错误,所以每当我移动到 k8s 并以高请求密度测试这个应用程序时,队列 pod 也会再次停止工作,因为我这个应用程序的第二个问题。

*关于我的集群的额外信息:k8s 版本是 1.15,docker 版本是 19.3.1,CNI 插件是 calico,我使用 helm。

现在有什么方法可以解决问题并识别问题出在哪里?

0 投票
2 回答
58 浏览

kubernetes - 哪个 CNI 最适合在 kubernate 部署中使用外部 sql 服务器运行 .net 核心应用程序?

我需要使用最适合 Dotnet 核心的 cni 和 SQL 服务器(相同网络但不同 IP)Kubernetes 部署。

0 投票
3 回答
7508 浏览

kubernetes - 如何修复 Flannel CNI 插件。错误:[插件法兰绒不支持​​配置版本“”]

在安装 Kubernetes 时,我卡在 CNI 插件安装和配置部分。我已经安装了 Flannel,但由于 coredns pod 处于挂起状态,我在 kubelet 日志中看到错误。

操作系统:Centos7 k8s 版本:1.16 Kubeadm 用于设置集群。

我使用以下方法安装了插件:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

这是我可以在 Kubelet 日志中看到的错误:

这是豆荚:

有一个文件/etc/cni/net.d名为10-flannel.conflist. 它的内容是:

0 投票
1 回答
251 浏览

networking - minimise disruption on weave network upgrade on kubernetes

I would like to upgrade my weave network from version 2.5.0 to 2.5.2. I understand that it's "as simple" as updating the weave daemonset.... however, i was wondering if there is a way that this can be done with minimal disruption to running pods on the system.

An simple example in my mind would be to:

  • cordon node1
  • drain node1 of all pods
  • update weave on node1
  • uncordon node1

... then rinse and repeat for each k8s node until all done.

0 投票
1 回答
412 浏览

kubernetes - 在 k8s1.16 中使用 kubenet 和双栈时,如何配置在另一个节点上 ping cbr0 gw?

我按照本指南安装了一个带有两个节点的 kubernetes v1.16 集群,并启用了“IPv4/IPv6 双栈” 。对于“双栈”,我设置--network-plugin=kubenet为 kubelet。

现在,pod 有 ipv4 和 ipv6 地址,每个节点都有一个 cbr0 gw,同时具有 ipv4 和 ipv6 地址。但是当我从一个节点ping到另一个节点的cbr0 gw时,它失败了。

我尝试手动添加路由如下:“ip route add [podCIDR of other node] via [ipaddress of other node]”

在两个节点上添加路由后,我可以用 ipv4 ping cbr0 gw 成功。但是“手动添加路由”似乎不是正确的方法。

当我使用 kubenet 时,我应该如何配置从一个节点 ping 到另一个节点的 cbr0 gw?

0 投票
1 回答
236 浏览

kubernetes - Kubernetes 1.15.5 和 romana 2.0.2 在添加或删除任何 pod 时出现网络错误

我在我们的 Kubernetes 集群中遇到了一些神秘的网络错误。虽然我最初使用 ingress 时遇到了这些错误,但是当我绕过我们的负载均衡器、绕过 kube-proxy 和绕过 nginx-ingress 时,出现的错误更多。直接访问服务和直接访问 Pod IP 时出现的错误最多。我相信这是因为负载均衡器和 nginx 比原始 iptable 路由具有更好的错误处理能力。

为了测试错误,我在同一子网上使用来自 VM 的 apache 基准测试,任何并发级别,没有保持活动,连接到 pod IP 并使用足够高的请求数给我时间来扩大或缩小部署。奇怪的是,我修改哪个部署并不重要,因为它总是会导致相同的错误集,即使它与我正在修改的 pod 无关。任何添加或删除 pod 都会触发 apache 基准测试错误。手动删除、放大/缩小、自动缩放所有触发错误。如果在 ab 测试运行时没有 pod 更改,则不会报告错误。请注意,如果不能消除错误,keep-alive 似乎确实会大大减少错误,但我只测试了几次,从未发现错误。

除了一些奇怪的 iptable 冲突之外,我真的看不出删除 pod A 会如何影响 pod B 的网络连接。由于错误是短暂的并且会在几秒钟内消失,这似乎更像是短暂的网络中断。

样本 ab 测试:ab -n 5000 -c 2 https://10.112.0.24/

使用 HTTPS 时的错误:

使用 HTTP 时的错误:

示例 ab 输出。遇到第一个错误后我 ctl-C:

当前可能相关的 sysctl 设置:

我没有看到任何 conntrack “完整”错误。最好我能说没有丢包。我们最近从 1.14 升级并没有注意到这个问题,但我不能肯定它不存在。我相信我们很快就会被迫从 romana 迁移出去,因为它似乎不再被维护,而且当我们升级到 kube 1.16.x 时,我们在启动时遇到了问题。

我今天整天在互联网上搜索类似的问题,与我们的问题最接近的问题是https://tech.xing.com/a-reason-for-unexplained-connection-timeouts-on-kubernetes-docker-abd041cf7e02但我不知道如何实现 iptable masquerade --random-fully 选项,因为我们使用 romana 并且我读到(https://github.com/kubernetes/kubernetes/pull/78547#issuecomment-527578153)完全随机是我们正在使用的 linux 内核 5 的默认值。有任何想法吗?

  • Kubernetes 1.15.5
  • 罗马2.0.2
  • centos7
  • Linux kube-master01 5.0.7-1.el7.elrepo.x86_64 #1 SMP Fri Apr 5 18:07:52 EDT 2019 x86_64 x86_64 x86_64 GNU/Linux

====== 2019 年 11 月 5 日更新 ======

有人建议测试备用 CNI。我选择了 calico,因为我们在旧的基于 Debian 的 kube 集群中使用了它。我使用我们最基本的 Centos 7 模板 (vSphere) 重建了一个虚拟机,所以我们的自定义有一些包袱。我无法列出我们在模板中自定义的所有内容,但最显着的变化是内核 5 升级yum --enablerepo=elrepo-kernel -y install kernel-ml

启动 VM 后,这些是安装 kubernetes 和运行测试的最少步骤:

现在设置已准备就绪,这是 ab 测试:

此错误后 ab 测试放弃。如果我减少请求的数量以避免超时,您会看到:

这个问题在技术上与我报告的原始问题不同,但这是一个不同的 CNI,仍然存在网络问题。当我在 kube/romana 集群中运行相同的测试时,它确实存在超时错误:在与 pod 相同的节点上运行 ab 测试。两者都遇到了相同的超时错误,但在 romana 中,我可以在超时之前完成数千个请求。Calico 在达到十几个请求之前遇到超时错误。

其他变体或注释: - net.netfilter.nf_conntrack_tcp_be_liberal=0/1 似乎没有什么不同 - 更高的-n值有时会起作用,但它在很大程度上是随机的。-n- 连续多次以低值运行“ab”测试有时会触发超时

在这一点上,我很确定我们的 centos 安装存在一些问题,但我什至无法猜测它可能是什么。是否有任何其他限制、sysctl 或其他配置可能导致此问题?

====== 2019 年 11 月 6 日更新 ======

我观察到我们安装了较旧的内核,因此我使用相同的较新内核 5.3.8-1.el7.elrepo.x86_64 升级了我的 kube/calico 测试 VM。更新和几次重新启动后,我无法再重现“apr_pollset_poll:指定的超时已过期(70007)”超时错误。

现在超时错误消失了,我可以重复原始测试,在我的 vSphere VM 上加载测试 pod A 并杀死 pod B。在 romana 环境中,问题仍然存在,但仅当负载测试位于与 pod A 所在位置不同的主机上时。如果我在同一台主机上运行测试,则完全没有错误。使用 Calico 而不是 romana,两台主机上都没有负载测试错误,因此问题消失了。可能仍有一些设置需要调整,可以帮助 romana,但我认为这是 romana 的“罢工 3”,所以我将开始将完整的环境过渡到 Calico,并在那里进行一些验收测试,以确保没有隐藏的陷阱。

0 投票
1 回答
639 浏览

kubernetes - 使用 multus-cni 添加的 IP 地址无法从同一集群中的另一个 pod 访问

我正在使用 multus-cni 在我的 pod 中创建多个接口。我已经配置了 weave-net CNI,因此 pod 提供了集群 ip 10.32.xx 使用下面的 network-attachment-definition ,我能够在 IP 地址为 10.32.0.180-199 的 pod 内启动多个接口,但这些 IP 地址是无法从同一集群中的其他 pod 访问。如果我在另一个 pod 中执行 kubectl exec 并 ping 10.32.0.180,我将无法 ping 该 IP。

谁能告诉我需要做什么才能在集群中访问 pod 中的其他接口?

0 投票
2 回答
4660 浏览

cni - 如何使用 podman 复制 docker macvlan 网络?

我在用于托管 Unifi 网络控制器应用程序的 Fedora 工作站上有一个可用的 docker 实现。我使用 macvlan 为控制器分配静态 IP。创建 macvlan 的 docker network 命令是:

控制器运行的容器被分配了一个静态 ip:

docker run --rm --init --network unifinet --ip 192.168.110.226 ....

我想使用 podman 作为替代来实现这一点。是否有有用的在线教程解释如何使用 podman 使用的 CNI 的实现?特别是macvlan插件?我无法决定是否应该使用静态 IPAM 插件或本地主机 IPAM 插件。

Brent Baude 的使用 Podman 容器租赁可路由 IP 地址是一个好的开始,但重点是使用 dhcp IPAM 插件。

谢谢你