首页 > 解决方案 > 无法在不同机器上运行的 kubernetes pod 之间传输文件

问题描述

一年多以来,我将我的静态网站部署在只有一个节点的 Kubernetes 集群中(基本上遵循下面的场景 1)。

这些天,我在集群中添加了另一个节点,一切正常,除了一个奇怪的细节阻止我发布我的网站。

举例来说,假设我在pod1node 上运行的 shell 中node1

场景 1. 如果我的网站在同一个 pod 上运行node1,那么

// pod1

$ wget <static-website-pod-IP>:PORT/some-file.html

成功获取some-file.html

场景 2. 相比之下,如果我的网站在 pod 上运行node2,那么同样的命令

// pod1

$ wget <static-website-pod-IP>:PORT/some-file.html

对于静态网站,我尝试了多个nginx版本和配置以及 python 虚拟服务器。

我还使用 Kubernetes 最新 v1.18 和最新 v1.16 进行了测试。

知道为什么我不能从运行在不同节点上的 pod 下载更大的文件吗?

标签: kubernetes

解决方案


我设法从@anton-matsiuk 的提示开始解决了这个问题。

使用的网络接口使用的 MTU 是 1450:

$ ip link show

...
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 86:00:00:53:4d:50 brd ff:ff:ff:ff:ff:ff
...

所以解决方案是根据这张表ConfigMap将calico的默认参数修改veth_mtu: "1440"为。veth_mtu: "1430"

谢谢你,@anton-matsiuk。


推荐阅读