web-dev-qa-db-ja.com

Docker + Ansible + google-compute-enginedebianパッケージ-紛らわしい話

親愛なる仲間のサーバー障害者!

私は私をたくさん混乱させる問題に出くわしました、そしてあなたは私の唯一の助けです!簡単に言うと、1。サーバーを構成するための一連のAnsibleプレイブックがあります2.これらのプレイブックはGoogle CloudとDigitalOceanに対してテストおよび検証されています3.今週、サーバー上のDockerコンテナーを起動するプレイブックが最新のGoogle Computeインスタンスで失敗し始めました(eu -west4-a)そしてそこだけ-古いコンピューティングインスタンスは期待どおりに動作し、他のISPのインスタンスも同様に動作します

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\")"}

コンテナーがdockerrun(ansibleプレイブックと同じパラメーターを使用)によって開始されると、コンテナーは正常に開始されます。また、画像の1つだけの場合もそうではありません。つまり、ansibleを介して開始できるコンテナーはありません。同時に、サーバー上で直接dockerrunで起動するとうまく機能します。

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に関連する問題だと考えられていましたが、まったく同じバージョンで同じパッケージとライブラリのセットをインストールしたことで、私は楽しみになりました。したがって、最終的に、ansibleを介してDockerコンテナーを再開できるようにするのは、発行です...

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

また、何も修正しません(VM全体を再起動した後でも)。何をチェックし、何を見るかについてのアイデアが不足しています-パッケージは他のVMに存在し、最近の動作の変更のように見えるため、パッケージを削除することは実際には道ではないと感じていますどこかどこを特定できません。

どんな返事でも大歓迎です!

4
paranoid

Googleの課題追跡システムによると: https://issuetracker.google.com/issues/111907041

この問題の原因は長いホスト名(私の場合は50文字)でした-それを減らすことで問題が解決し、コンテナーを起動できるようになりました。詳細については、Googleの問題を調べることに興味のあるすべての人を招待します。

0
paranoid