Machine: ““10.0.0.0/24”的子网沙箱加入失败:创建 vxlan 接口时出错:不支持操作”

创建于 2016-01-06  ·  22评论  ·  资料来源: docker/machine

我在使用 docker.com 上的“多主机网络入门”文章设置的 swarm 上运行 docker-compose 时遇到了问题,除了使用通用驱动程序

docker-machine create --driver generic --generic-ip-address $HOST1 --generic-ssh-user root --swarm --swarm-discovery="consul://$(docker-machine ip consul):8500" --engine-opt="cluster-store=consul://$(docker-machine ip consul):8500" --engine-opt="cluster-advertise=eth0:2376" node-b

对于每个主人来说,一切似乎都很好

配置群...
正在检查与 Docker 的连接...
Docker 已启动并运行!

但是,当我运行此命令时(仅使用 docker hub 列出的容器)

docker-compose --x-networking --x-network-driver=overlay up -d

错误:无法启动容器 4f55c34c5687bc810aaafd58f22d0a60a118d353bc4209993881265e25d171a8:“10.0.0.0/24”的子网沙箱加入失败:错误创建不支持的 vxlan 接口

drivegeneric

最有用的评论

我已经在 Linode 中与 Docker Swarm 斗争了大约 2 天,所以,这里是我的说明,关于如何为到达这里的其他人解决它。

这里有截图说明,因为我觉得这个过程很容易迷路,希望其他人能避免所有的挣扎。

  • 您从标准的 Linode 开始,单击“Linode 配置文件”中的“编辑”链接:

selection_001

  • 在设置中,有一个用于选择内核的下拉菜单,默认情况下它有一个 Linode 内核(这就是 Docker Swarm 出现问题的原因):

selection_002

  • 选择内核GRUB 2

selection_003

  • 保存更改:

selection_004

  • 您的新个人资料最后会显示(GRUB 2) 。 您现在可以重新启动您的 Linode。 无需安装任何东西、重新部署等:

selection_005

  • 重新启动后,它应该可以工作。

所有22条评论

你在主机上安装了什么版本的内核?
https://github.com/docker/docker/issues/14145

4.1.5-x86_64-linode61

在这里也一样,但我没有使用 compose,只是简单地使用 Docker 和覆盖网络驱动程序。 核心:
Linux vagrant-ubuntu-trusty-64 4.2.0-23-generic #28~14.04.1-Ubuntu SMP Thu Dec 31 13:40:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

重新启动虚拟机后,一切正常。

在 Linode 上也是如此。这是一个内核问题。 甚至 Linode 也会告诉您该框运行 4.x,如果您安装官方内核 (>=3.16) 并将 linode 设置为从 GRUB2 启动,那么它就会工作。

关闭。 这是内核问题

对不起各位,我这里也有同样的问题。 但我不明白是什么原因。 有人可以告诉更多细节吗?

您的内核可能太旧或不受支持。

好吧,这让我感到困惑。 内核版本不旧,但我仍然收到此错误。
内核版本为:4.4.0-x86_64-linode63,操作系统为Ubuntu 14.04。
和码头信息:

Containers: 6
 Running: 0
 Paused: 0
 Stopped: 6
Images: 37
Server Version: 1.10.2
Storage Driver: devicemapper
 Pool Name: docker-8:0-65539-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 107.4 GB
 Backing Filesystem: ext4
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 2.264 GB
 Data Space Total: 107.4 GB
 Data Space Available: 21.93 GB
 Metadata Space Used: 3.138 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.144 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.77 (2012-10-15)
Execution Driver: native-0.2
Logging Driver: json-file
Plugins: 
 Volume: local
 Network: overlay bridge null host
Kernel Version: 4.4.0-x86_64-linode63
Operating System: Ubuntu 14.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 991.7 MiB
Name: localhost
ID: S4LH:BUBO:ZCVX:QDGD:UWAI:GIFD:DL2I:KGP2:HDDL:WLQ3:WPO4:ZB34
WARNING: No swap limit support
Cluster store: consul://xxx.xxx.xxx:8500/network
Cluster advertise: xxx.xxx.xxx:2375

是的,Linode 的 4.4 内核有这个问题。 从 Ubuntu 存储库安装一个签名的内核(如 lts-wily),确保 Linode 实际启动该内核(在 VM 设置中的某处),然后你就可以开始了。

apt-get install -y linux-signed-generic-lts-wily

仪表板 -> 编辑配置文件 -> 内核 -> Grub2

非常感谢。 这确实解决了问题。 :)
但请允许我问,这背后的原因是什么? Linode 的 4.4 内核与签名内核有什么不同,这会导致这个问题吗?
我在 github 上读过一些问题,通常这是由旧内核 < 3.16 引起的,但为什么 4.4 仍然有这个。

我不知道,不幸的是。

如果这是一个愚蠢的问题,请道歉,但我也有这个问题。 /etc/apt/sources.list 中需要哪些条目才能使 apt-get install 工作,因为我没有运气让它与我尝试过的东西一起工作。

没关系 - 发现了 trusty/trusty-updates 存储库

对于那些即使使用最近的内核也可能遇到此问题的人。
我们对 OVH 提供的内核(嵌入了所有正确的驱动程序)遇到了同样的问题,这些内核没有设置 CONFIG_VXLAN。
因此,请检查配置(如果有)并重新编译内核,同时确保 CONFIG_VXLAN 和 CONFIG_VETH 作为嵌入式或作为模块启用。

谢谢@matevarga。 今天在使用 CentOS 7 的 Linode 上也是如此。不过,我不必自己安装内核,只需在首次启动它们之前重建机器并将它们设置为 Linode 面板中的 GRUB 2。

我已经在 Linode 中与 Docker Swarm 斗争了大约 2 天,所以,这里是我的说明,关于如何为到达这里的其他人解决它。

这里有截图说明,因为我觉得这个过程很容易迷路,希望其他人能避免所有的挣扎。

  • 您从标准的 Linode 开始,单击“Linode 配置文件”中的“编辑”链接:

selection_001

  • 在设置中,有一个用于选择内核的下拉菜单,默认情况下它有一个 Linode 内核(这就是 Docker Swarm 出现问题的原因):

selection_002

  • 选择内核GRUB 2

selection_003

  • 保存更改:

selection_004

  • 您的新个人资料最后会显示(GRUB 2) 。 您现在可以重新启动您的 Linode。 无需安装任何东西、重新部署等:

selection_005

  • 重新启动后,它应该可以工作。

感谢您的发现@tiangolo完美工作

谢谢@tiangolo为我工作完美

如果有人在较旧的 Linode 上遵循@tiangolo的说明并盯着来自 Lish 的 Grub 提示,请参阅: https :

我正面临https://www.linode.com/docs/platform/manager/how-to-change-your-linodes-kernel/#no -upstream-kernel-installed 问题:-(

Ubuntu 服务器 16.04 LTS

  1. sudo apt 更新
  2. apt list -a linux-image-generic
  3. sudo apt install linux-image-generic grub2
  4. ls /启动
  5. 须藤vim /etc/default/grub
  6. 须藤更新-grub
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX="console=ttyS0,19200n8 net.ifnames=0"

GRUB_TERMINAL=serial
GRUB_DISABLE_OS_PROBER=true
GRUB_SERIAL_COMMAND="serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1"
GRUB_DISABLE_LINUX_UUID=true
GRUB_GFXPAYLOAD_LINUX=text

参考:
https://askubuntu.com/questions/879888/how-do-i-update-kernel-to-the-latest-mainline-version
https://askubuntu.com/questions/119080/how-to-update-kernel-to-the-latest-mainline-version-without-any-distro-upgrade

请注意 10.0.0.0/24 是无效子网。 10.0.0.0/8(A 类)网络中的第一个有效子网,现在用/24子网掩码切片是... 10.0.1.0/24 。 您必须丢弃网络端的顶部/底部,就像您丢弃该位掩码主机端的顶部/底部一样。 同理,10.255.255.0/24 也是无效的。

对于任何给定的子网掩码,有2 x - 2 个子网和2 x - 2 个主机

...其中 x 是掩码那一侧的位数。 因此,对于/24 ,网络侧为 24,主机侧为 8,构成 16777214 个子网和 254 个主机。 请注意位掩码网络端计算的“- 2”部分。 这意味着你必须扔掉(你不能发出)那些因为它们对 tcp/ip 的传输层有意义,在这种情况下。

这对于已经知道您同样无法绑定任何10.x.y.0/2410.x.y.255/24地址的人来说应该是有意义的,因为它们已经意味着某些东西。

我已经开始在 19.03 Docker Swarm 上得到这个

此页面是否有帮助?
0 / 5 - 0 等级