docker の原因と対処

docker(dockerd)のログに記録されるエラーから、原因と対処を調べます。「全構成共通」と「Swarmクラスタ構成固有」に分けて示します。

docker サービスのログ確認手順は ログの調査(採取手順) を参照してください。

全構成共通

docker デーモンが不安定

主なエラーメッセージ

http: superfluous response.WriteHeader call from go.opentelemetry.io/...

ログのサンプルエントリ

Oct  4 13:59:23 ke2-rhel89-swarm-1 dockerd[1512]: 2024/10/04 13:59:23 http: superfluous response.WriteHeader call from go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp.(*respWriterWrapper).WriteHeader (wrap.go:98)

原因

VM のリソース使用率が高い場合、さまざまなエラーが発生し、上記のようなログが頻繁に表示されることがあります。

解決策

リソース使用率が正常化すると、Docker で実行中のコンテナは通常自動的に回復します。問題が解決しない場合は以下を確認してください。

  1. ホストサーバのリソース状況の確認
  2. Docker コンテナで利用のリソース状況の確認

Swarmクラスタ構成固有

ネットワークの問題または特定ノードのインターフェイスのダウン

主なエラーメッセージ

  • memberlist: Failed to send UDP ping: ... network is unreachable
  • bulk sync to node ... failed: ... network is unreachable

ログのサンプルエントリ

Sep  9 13:24:53 ke2-rhel89-swarm-3 dockerd[1441]: level=warning msg="memberlist: Failed to send UDP ping: write udp [::]:7946->10.20.47.12:7946: sendto: network is unreachable"
Sep  9 13:24:53 ke2-rhel89-swarm-3 dockerd[1441]: level=warning msg="bulk sync to node 26b516451957 failed: failed to send a TCP message during bulk sync: dial tcp 10.20.47.12:7946: connect: network is unreachable"
Sep  9 13:24:58 ke2-rhel89-swarm-3 dockerd[1441]: level=info msg="memberlist: Marking 26b516451957 as failed, suspect timeout reached (0 peer confirmations)"

解決策

ネットワークの問題が解決されると、Docker Swarm ノードは通常自動的に回復します。回復しない場合は ネットワーク導通の確認 を実施してください。ノード間通信が正常に戻っても特定ノードで KE2 APP が正常に動作していない場合は、Docker サービスを再起動してください(systemctl restart docker.service)。

外部データベースまたは Swarm ノードとの高いネットワーク遅延

主なエラーメッセージ

  • fatal task error" error="task: non-zero exit (1)
  • NetworkDB stats ... healthscore:1 (connectivity issues)

ログのサンプルエントリ

Sep 11 18:32:17 ke2-rhel89-swarm-2 dockerd[785695]: level=warning msg="NetworkDB stats ke2-rhel89-swarm-2(a6a2e4038ef8) - healthscore:1 (connectivity issues)"
Sep 11 18:39:58 ke2-rhel89-swarm-2 dockerd[785695]: level=error msg="fatal task error" error="task: non-zero exit (1)" ...

解決策

ネットワークの問題が解決されると KE2 APP は自動的に回復します。回復しない場合は以下を確認してください。

Docker 不安定性(node underweighting)

主なエラーメッセージ

  • underweighting node <NODE_ID> for service <SERVICE_ID> because it experienced 5 failures or rejections within 5m0s
  • Could not parse VIP address while releasing
  • Failed to allocate network resources for node ...

ログのサンプルエントリ

Sep 19 14:37:21 ke2-rhel89-swarm-1 dockerd[1064]: level=warning msg="underweighting node sw16fqkz94al7qwwqeksgtzeh for service m23oykzvchn3nc6n6cvsyebso because it experienced 5 failures or rejections within 5m0s"
Sep 19 14:37:21 ke2-rhel89-swarm-1 dockerd[1064]: level=error msg="error deallocating vip" error="invalid CIDR address: " ...

原因

あるノードが短期間に複数回の失敗やタスク拒否を経験したため、Docker Swarm のスケジューリングがこのノードの優先度を下げて他ノードにタスクを振り分けています。原因はノードの過負荷やネットワークの問題が考えられます。

解決策

Swarm ノードダウン・VM ダウン・ネットワーク障害

主なエラーメッセージ

  • error sending message to peer
  • rpc error: code = Unavailable ... no route to host

ログのサンプルエントリ

Sep 12 11:32:20 ke2-rhel89-swarm-1 dockerd[1428]: level=error msg="error sending message to peer" error="rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.20.47.12:2377: connect: no route to host\""

解決策

Swarm ノードとの高いネットワーク遅延

主なエラーメッセージ

  • i/o timeout
  • Bulk sync to node ... timed out

ログのサンプルエントリ

Sep 24 09:23:31 ke2-rhel89-swarm-1 dockerd[1491]: level=error msg="Bulk sync to node 464a64613c02 timed out"
Sep 24 09:23:31 ke2-rhel89-swarm-1 dockerd[1491]: level=warning msg="memberlist: Failed fallback TCP ping: timeout 1s: read tcp 10.20.47.11:32850->10.20.47.13:7946: i/o timeout"

解決策

ネットワーク導通の確認 を確認してください。

Gluster ボリュームが正しくマウントされていない

主なエラーメッセージ

invalid mount config for type "bind": bind source path does not exist: /mnt/gluster/var

ログのサンプルエントリ

Sep 25 13:23:45 ke2-rhel89-swarm-1 dockerd[1444]: level=error msg="fatal task error" error="invalid mount config for type \"bind\": bind source path does not exist: /mnt/gluster/var" ...

解決策

共有ファイルシステム(glusterfs)の正常性確認 を確認してください。

error while reading from stream

主なエラーメッセージ

error while reading from stream" error="rpc error: code = Canceled desc = context canceled

ログのサンプルエントリ

Sep  2 08:47:39 ke2-rhel89-swarm-1 dockerd[752072]: level=error msg="error while reading from stream" error="rpc error: code = Canceled desc = context canceled"

原因

特定ノードのリソース使用率が高い場合に発生することがあります。

解決策

リソース使用率が正常化すると Docker で実行中のコンテナは通常自動的に回復します。回復しない場合は ホストサーバのリソース状況の確認 を確認してください。