Docker在飞行中改变MTU?

agxfikkp  于 2023-03-17  发布在  Docker
关注(0)|答案(1)|浏览(358)

我有9个堆栈的生产Docker群,其中大部分都有卷。目前Docker是单节点运行的。
我必须添加第二个节点,这是问题开始的地方。特别是问题是与portainer -它变得非常滞后,几乎无法使用。而且当我移动一些容器到一个新的节点,我的项目似乎完全卡住-问题是在不同节点上的容器之间的通信。一些请求是好的,但大多数似乎是坏的。
经过一番研究,我发现问题似乎是与MTU。MTU的eth 1是1450和docker的默认值是1500。
问题是,是否有可能将Docker的MTU动态更改为1450?
我试过:
1.向dockerd添加密钥--mtu=1450 --docker服务根本没有启动
1.在docker-compose中更改主网络的mtu-似乎没有更新,我认为应该重新创建网络
1.将mtu选项添加到/etc/docker/daemon. json似乎也没有效果
如何在生产服务器上更改mtu?可能的停机时间为10-15分钟是可以的,但我不想删除所有堆栈并重新创建它们。

gcmastyq

gcmastyq1#

解决了,漫长的路...
我有vps命名为“m1”与我的docker堆栈,最后昨天我意识到,我不能更新mtu上的工作集群((
所以我添加了“m2”(作为管理者)和“m3”(作为工作者),并在“m2”+“m3”(而不是“m1”)上创建了Docker swarm集群。
1.我修改了“m2”上的/lib/systemd/system/docker.service,并在此处添加了--mtu=1450

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --mtu=1450

我还创建了新文件/etc/docker/daemon.json{ "mtu": 1450 }(感谢@BMitch)
1.我删除了“m2”上的入口网络,并使用选项"com.docker.network.driver.mtu": "1450"重新创建了它
1.我添加了mtu到我所有的覆盖网络在项目中(在docker-compose):

networks:
  network1:
    driver: overlay
    driver_opts:
      com.docker.network.driver.mtu: 1450

更新:这里是“m2”+“m3”的目的-我可以检查问题是否在新的集群中解决,而我的产品“m1”正在工作。我尝试了portainer,它的工作没有任何滞后,我以前见过。下一次我只会删除滞后的vps上的堆栈,更新设置(mtu)和重新部署堆栈-这将是更快!
1.我删除了“m1”中的堆栈,并将卷复制到“m2”(多亏了How to copy docker volume from one machine to another?
1.我将服务部署到“m2”,并将域的DNS更新为“m2”ip
它的工作正常,没有滞后后,MTU更新!

相关问题