Я использую виртуальную машину Ubuntu 18.04, размещенную на Nutanix. Время от времени я сталкиваюсь с проблемой, при которой сеть докеров создается с помощью docker-compose
, а затем машина полностью перестанет отвечать. Я видел это только три раза, с промежутком в много месяцев, поэтому было сложно найти закономерность.
Последняя команда, которую я использовал, чтобы решить эту проблему, была:
docker-compose -f /path/to/compose.yml up
Который начал создавать сеть, а потом потерпел неудачу:
Creating network "compose_kong-ee" with the default driver
packet_write_wait: Connection to 10.120.160.100 port 22: Broken pipe
Теперь, если я перезапущу компьютер, не останавливая демон докера, система выйдет из строя. Глядя на kern.log, я вижу интерфейс br-a249, который был отключен как раз в то время, когда это произошло (~ 12: 30 utc):
Jun 3 12:26:28 USDALXKADV01 kernel: [1397332.561962] br-a249e56f08c5: port 1(vethe00f673) entered disabled state
Jun 3 12:26:28 USDALXKADV01 kernel: [1397332.565381] veth6a978dc: renamed from eth0
Jun 3 12:26:28 USDALXKADV01 kernel: [1397332.583094] br-a249e56f08c5: port 1(vethe00f673) entered disabled state
Jun 3 12:26:28 USDALXKADV01 kernel: [1397332.590855] device vethe00f673 left promiscuous mode
Jun 3 12:26:28 USDALXKADV01 kernel: [1397332.590860] br-a249e56f08c5: port 1(vethe00f673) entered disabled state
Jun 3 12:29:15 USDALXKADV01 kernel: [1397500.520269] IPv6: ADDRCONF(NETDEV_UP): br-342fcad19ff7: link is not ready
Jun 3 12:48:52 USDALXKADV01 kernel: [1398677.266687] vmxnet3 0000:03:00.0 ens160: intr type 3, mode 0, 2 vectors allocated
Jun 3 12:48:52 USDALXKADV01 kernel: [1398677.268869] vmxnet3 0000:03:00.0 ens160: NIC Link is Up 10000 Mbps
Jun 3 12:48:52 USDALXKADV01 kernel: [1398677.271911] IPv6: ADDRCONF(NETDEV_UP): ens160: link is not ready
Jun 3 12:48:52 USDALXKADV01 kernel: [1398677.271929] IPv6: ADDRCONF(NETDEV_CHANGE): ens160: link becomes ready
Jun 3 12:50:57 USDALXKADV01 kernel: [1398801.703190] br-a249e56f08c5: port 2(vetha6450a1) entered disabled state
Jun 3 12:50:57 USDALXKADV01 kernel: [1398801.705254] veth1c11b8c: renamed from eth0
Jun 3 12:50:57 USDALXKADV01 kernel: [1398801.718831] br-a249e56f08c5: port 2(vetha6450a1) entered disabled state
Jun 3 12:50:57 USDALXKADV01 kernel: [1398801.726647] device vetha6450a1 left promiscuous mode
Jun 3 12:50:57 USDALXKADV01 kernel: [1398801.726652] br-a249e56f08c5: port 2(vetha6450a1) entered disabled state
И этот интерфейс был задействован, когда я был запущен, что соответствует одному из двух контейнеров, которые я запускал в то время. Я выдал docker stop
к одному из них, чтобы облегчить обновление:
IP address for docker0: 172.17.0.1
IP address for br-a14bcb10b447: 172.18.0.1
IP address for br-a249e56f08c5: 172.22.0.1
Глядя на записи системного журнала, я могу увидеть временной промежуток всего моего сеанса ssh:
Jun 3 12:22:33 USDALXKADV01 systemd[1]: Started Session 468 of user kong.
Jun 3 12:26:27 USDALXKADV01 containerd[1468]: time="2020-06-03T12:26:27.921166420Z" level=info msg="shim reaped" id=f3a678f2747a3398a15dd605299d1b18b9d173e6c68d4bb8c8c44e7a56c2ed2a
Jun 3 12:26:27 USDALXKADV01 dockerd[12217]: time="2020-06-03T12:26:27.933328211Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Jun 3 12:26:28 USDALXKADV01 kernel: [1397332.561962] br-a249e56f08c5: port 1(vethe00f673) entered disabled state
Jun 3 12:26:28 USDALXKADV01 systemd-networkd[1398]: vethe00f673: Lost carrier
Jun 3 12:26:28 USDALXKADV01 systemd-timesyncd[499]: Network configuration changed, trying to establish connection.
Jun 3 12:26:28 USDALXKADV01 kernel: [1397332.565381] veth6a978dc: renamed from eth0
Jun 3 12:26:28 USDALXKADV01 systemd-udevd[14938]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
Jun 3 12:26:28 USDALXKADV01 kernel: [1397332.583094] br-a249e56f08c5: port 1(vethe00f673) entered disabled state
Jun 3 12:26:28 USDALXKADV01 systemd-networkd[1398]: vethe00f673: Link DOWN
Jun 3 12:26:28 USDALXKADV01 networkd-dispatcher[763]: WARNING:Unknown index 173 seen, reloading interface list
Jun 3 12:26:28 USDALXKADV01 kernel: [1397332.590855] device vethe00f673 left promiscuous mode
Jun 3 12:26:28 USDALXKADV01 kernel: [1397332.590860] br-a249e56f08c5: port 1(vethe00f673) entered disabled state
Jun 3 12:26:28 USDALXKADV01 networkd-dispatcher[763]: ERROR:Unknown interface index 173 seen even after reload
Jun 3 12:26:28 USDALXKADV01 systemd-timesyncd[499]: Synchronized to time server 91.189.89.198:123 (ntp.ubuntu.com).
Jun 3 12:26:28 USDALXKADV01 systemd[1]: Starting OpenNebula delayed reconfiguration script...
Jun 3 12:26:28 USDALXKADV01 systemd[1]: Started OpenNebula delayed reconfiguration script.
Jun 3 12:27:28 USDALXKADV01 one-contextd[15036]: Started for type all to reconfigure
Jun 3 12:27:28 USDALXKADV01 one-contextd[15040]: Acquiring lock /var/run/one-context/one-context.lock
Jun 3 12:27:28 USDALXKADV01 one-contextd[15042]: Acquired lock /var/run/one-context/one-context.lock
Jun 3 12:27:29 USDALXKADV01 one-contextd[15055]: Reading context via vmtoolsd
Jun 3 12:27:29 USDALXKADV01 one-contextd[15064]: Comparing /var/run/one-context/context.sh.0KXIk7 and /var/run/one-context/context.sh.local for changes
Jun 3 12:27:29 USDALXKADV01 one-contextd[15066]: No changes in context, skipping
Jun 3 12:27:29 USDALXKADV01 one-contextd[15067]: Comparing /var/run/one-context/context.sh.0KXIk7 and /var/run/one-context/context.sh.network for changes
Jun 3 12:27:29 USDALXKADV01 one-contextd[15069]: No changes in context, skipping
Jun 3 12:27:29 USDALXKADV01 one-contextd[15070]: Done
Jun 3 12:27:29 USDALXKADV01 one-contextd[15071]: Unmounting /var/run/one-context/mount.VEaypB
Jun 3 12:27:29 USDALXKADV01 one-contextd[15075]: Releasing lock /var/run/one-context/one-context.lock
Jun 3 12:29:15 USDALXKADV01 systemd-udevd[15148]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
Jun 3 12:29:15 USDALXKADV01 systemd-networkd[1398]: br-342fcad19ff7: Link UP
Jun 3 12:29:15 USDALXKADV01 systemd-timesyncd[499]: Network configuration changed, trying to establish connection.
Jun 3 12:29:15 USDALXKADV01 networkd-dispatcher[763]: WARNING:Unknown index 177 seen, reloading interface list
Jun 3 12:29:15 USDALXKADV01 kernel: [1397500.520269] IPv6: ADDRCONF(NETDEV_UP): br-342fcad19ff7: link is not ready
Jun 3 12:29:16 USDALXKADV01 systemd-timesyncd[499]: Synchronized to time server 91.189.89.198:123 (ntp.ubuntu.com).
Jun 3 12:29:16 USDALXKADV01 systemd[1]: Starting OpenNebula delayed reconfiguration script...
Jun 3 12:29:16 USDALXKADV01 systemd[1]: Started OpenNebula delayed reconfiguration script.
Jun 3 12:29:16 USDALXKADV01 systemd-timesyncd[499]: Network configuration changed, trying to establish connection.
Jun 3 12:29:16 USDALXKADV01 systemd-timesyncd[499]: Synchronized to time server 91.189.89.198:123 (ntp.ubuntu.com).
Jun 3 12:30:16 USDALXKADV01 one-contextd[15249]: Started for type all to reconfigure
Jun 3 12:30:16 USDALXKADV01 one-contextd[15253]: Acquiring lock /var/run/one-context/one-context.lock
Jun 3 12:30:16 USDALXKADV01 one-contextd[15255]: Acquired lock /var/run/one-context/one-context.lock
Jun 3 12:30:16 USDALXKADV01 one-contextd[15268]: Reading context via vmtoolsd
Jun 3 12:30:16 USDALXKADV01 one-contextd[15277]: Comparing /var/run/one-context/context.sh.JXXPUJ and /var/run/one-context/context.sh.local for changes
Jun 3 12:30:16 USDALXKADV01 one-contextd[15279]: No changes in context, skipping
Jun 3 12:30:16 USDALXKADV01 one-contextd[15280]: Comparing /var/run/one-context/context.sh.JXXPUJ and /var/run/one-context/context.sh.network for changes
Jun 3 12:30:16 USDALXKADV01 one-contextd[15282]: No changes in context, skipping
Jun 3 12:30:16 USDALXKADV01 one-contextd[15283]: Done
Jun 3 12:30:16 USDALXKADV01 one-contextd[15284]: Unmounting /var/run/one-context/mount.arNJ1s
Jun 3 12:30:16 USDALXKADV01 one-contextd[15288]: Releasing lock /var/run/one-context/one-context.lock
Что может вызвать эту проблему? Я бы предпочел не делать новую установку докера, так как это кажется лейкопластырем и не затрагивает суть проблемы. Кажется, это связано с тем, как докер настраивает сети, но я не уверен на 100%, что это проблема.
Я использую Docker версии 19.03.8, сборка afacb8b7f0
Я удалил одну из сетей, выполнив операцию «Очень плохо» и отредактировав файл local-kv.db в /var/lib/docker/network/files
. Удаление сети позволяет докеру запускаться без проблем.
Хотя это устраняет проблему, оно все еще не дает мне четкого ответа о том, что здесь происходит. Похоже, что с конфигурацией докеров по умолчанию на этом конкретном компьютере есть ограничение на количество сетей, которые вы можете иметь в любой момент времени.
может быть:
вы пытались использовать диапазон IP-адресов, который уже установлен на другом устройстве, но это нарушает ваш маршрут.
сетевой диапазон по умолчанию установлен в /etc/docker/daemon.json:
{
"default-address-pools":
[
{"base":"10.10.0.0/16","size":24}
]
}
также может быть, что вы достигли мягких / жестких ограничений
или просто нарушите работу сети, потому что на вашей виртуальной машине недостаточно оперативной памяти alllocated (shm) для сетевого стека cat /etc/sysctl.conf | grep vm.
действительно вы должны настроить:
количество открытых файлов, которые система может обработать http://www.dba-oracle.com/t_increase_number_of_open_file_descriptors.htm
исследуйте свои значения sysctl, особенно те, которые начинаются с «vm».
(настроить, например: sysctl-w vm.swappiness=10;sysctl -w vm.max_map_count=262144
) Kubernetes, Docker и vm.max_map_count