Уважаемые товарищи по сбоям сервера!
Я наткнулся на проблему, которая ОЧЕНЬ меня смущает, и вы моя единственная помощь! Короче говоря: 1. У меня есть набор доступных playbooks для настройки серверов 2. Эти playbook тестируются и проверяются в Google Cloud и DigitalOcean 3. На этой неделе playbook, запускающие контейнеры докеров на серверах, начал давать сбой на новейших экземплярах Google Compute (eu -west4-a) и только там - старые вычислительные инстансы ведут себя должным образом, как и инстансы других интернет-провайдеров.
Ansible выходит из строя со следующей ошибкой:
fatal: [example_hostname]: FAILED! => {"changed": false,
"msg": "Error starting container b57a81e7e1a39da89f91c6d6439b51cf4078f87f5a6997a7dcdd7098f84a7485:
500 Server Error: Internal Server Error (\"OCI runtime create failed:
container_linux.go:348: starting container process caused \"process_linux.go:402:
container init caused \\\"invalid argument\\\"\": unknown\")"}
Когда контейнер запускается с помощью docker run (с теми же параметрами, что и в ansible playbook), контейнер запускается успешно. Это также не относится к одному из изображений - никакие контейнеры не могут быть запущены через ansible. При этом запуск их докером прямо на сервере работает хорошо.
Демон Docker выходит из строя со следующей ошибкой:
time="2018-07-25T11:54:10.809711044+02:00" level=debug msg="Calling GET /_ping"
time="2018-07-25T11:54:10.810917212+02:00" level=debug msg="Calling POST /v1.38/containers/node_exporter/restart"
time="2018-07-25T11:54:10.813468661+02:00" level=debug msg="container mounted via layerStore: &{/var/lib/docker/overlay2/a11e836fe1015928ca1181298f0934a8ee70c122e4eb1e09635b2d31c11eb3b1/merged 0x55808cfe7620 0x55808cfe7620}"
time="2018-07-25T11:54:10.813897061+02:00" level=debug msg="container mounted via layerStore: &{/var/lib/docker/overlay2/a11e836fe1015928ca1181298f0934a8ee70c122e4eb1e09635b2d31c11eb3b1/merged 0x55808cfe7620 0x55808cfe7620}"
time="2018-07-25T11:54:10.820720679+02:00" level=debug msg="EnableService a31ae80856cef0bc72298b68660739e04bc710cd815ce2a746d7276065464ab0 START"
time="2018-07-25T11:54:10.821163095+02:00" level=debug msg="EnableService a31ae80856cef0bc72298b68660739e04bc710cd815ce2a746d7276065464ab0 DONE"
time="2018-07-25T11:54:10.826647553+02:00" level=debug msg="bundle dir created" bundle=/var/run/docker/containerd/a31ae80856cef0bc72298b68660739e04bc710cd815ce2a746d7276065464ab0 module=libcontainerd namespace=moby root=/var/lib/docker/overlay2/a11e836fe1015928ca1181298f0934a8ee70c122e4eb1e09635b2d31c11eb3b1/merged
time="2018-07-25T11:54:10+02:00" level=debug msg="event published" ns=moby topic="/containers/create" type=containerd.events.ContainerCreate
time="2018-07-25T11:54:10+02:00" level=info msg="shim docker-containerd-shim started" address="/containerd-shim/moby/a31ae80856cef0bc72298b68660739e04bc710cd815ce2a746d7276065464ab0/shim.sock" debug=true pid=7576
time="2018-07-25T11:54:10+02:00" level=debug msg="registering ttrpc server"
time="2018-07-25T11:54:10+02:00" level=debug msg="serving api on unix socket" socket="[inherited from parent]"
time="2018-07-25T11:54:10+02:00" level=info msg="shim reaped" id=a31ae80856cef0bc72298b68660739e04bc710cd815ce2a746d7276065464ab0
time="2018-07-25T11:54:10.870453438+02:00" level=error msg="stream copy error: reading from a closed fifo"
time="2018-07-25T11:54:10.870900093+02:00" level=error msg="stream copy error: reading from a closed fifo"
time="2018-07-25T11:54:10+02:00" level=debug msg="event published" ns=moby topic="/containers/delete" type=containerd.events.ContainerDelete
time="2018-07-25T11:54:10.883501549+02:00" level=error msg="a31ae80856cef0bc72298b68660739e04bc710cd815ce2a746d7276065464ab0 cleanup: failed to delete container from containerd: no such container"
time="2018-07-25T11:54:10.885529863+02:00" level=debug msg="FIXME: Got an API for which error does not match any expected type!!!: Cannot restart container node_exporter: OCI runtime create failed: container_linux.go:348: starting container process caused \"process_linux.go:402: container init caused \\\"invalid argument\\\"\": unknown" error_type="*errors.errorString" module=api
time="2018-07-25T11:54:10.885962960+02:00" level=error msg="Handler for POST /v1.38/containers/node_exporter/restart returned error: Cannot restart container node_exporter: OCI runtime create failed: container_linux.go:348: starting container process caused \"process_linux.go:402: container init caused \\\"invalid argument\\\"\": unknown"
time="2018-07-25T11:54:10.886356247+02:00" level=debug msg="FIXME: Got an API for which error does not match any expected type!!!: Cannot restart container node_exporter: OCI runtime create failed: container_linux.go:348: starting container process caused \"process_linux.go:402: container init caused \\\"invalid argument\\\"\": unknown" error_type="*errors.errorString" module=api
Ничего из этого при запуске через docker run. Первоначально считалось, что это проблема, связанная с ansible или python, но установка того же набора пакетов и библиотек в точно таких же версиях заставила меня с нетерпением ждать. Итак, в конечном итоге то, что позволяет мне снова запускать докер-контейнеры через анзибль, - это выдача ...
apt purge -y google-compute-engine google-compute-engine-oslogin
Как только эти пакеты исчезнут и экземпляр будет перезагружен, все будет работать безупречно !!! Текущие версии этих пакетов при проверке с других серверов от GCE:
ii google-compute-engine 2.8.3-1 all Google Compute Engine guest environment.
ii google-compute-engine-oslogin 1.3.0-1+deb9 amd64 Google Compute Engine OS Login
Из другого экземпляра, где все работает, как ожидалось:
ii google-compute-engine 2.7.6-1 all Google Compute Engine guest environment.
ii google-compute-engine-oslogin 1.1.5-1+deb9 amd64 Google Compute Engine OS Login
Я не могу понизить версию этих пакетов, поскольку, по всей видимости, их больше нет в репо.
Теперь по поводу OSLogin - я не использую эту функцию, и явная блокировка ее с помощью метаданных экземпляра (enable-oslogin = FALSE) ничего не меняет. Единственное надежное «исправление» этой проблемы - удаление пакетов, но, поскольку это «внезапный» сбой, это не похоже на правильный подход.
А также после удаления этих пакетов (и перезагрузки - перезапуска SSHd, вероятно, будет достаточно). Выполнение
/usr/bin/google_oslogin_control deactivate
Также ничего не исправляет (даже после перезагрузки всей ВМ). У меня закончились идеи, что проверять и на что смотреть - я чувствую, что удаление пакетов на самом деле не лучший способ, поскольку они присутствуют на других виртуальных машинах, и это действительно похоже на недавнее изменение поведения где-то Я не могу указать где.
Любой ответ приветствуется и приветствуется!
Согласно системе отслеживания проблем Google: https://issuetracker.google.com/issues/111907041
Причиной этой проблемы было длинное имя хоста (50 символов в моем случае) - его уменьшение решило проблему и позволило запускать контейнеры. Приглашаю всех желающих ознакомиться с вопросом Google для получения более подробной информации.