コンテンツにスキップ

トラブルシューティング / コンテナが正常に動作しない

1. Docker Stack 環境でコンテナが再起動を繰り返す

この問題は通常、設定、ファイアウォール、各種ホワイトリスト設定が正しくないために発生します。

具体的には以下のとおりです:

  1. ブラウザーでページを開くことができない
  2. sudo docker ps -a コマンドでコンテナ一覧を確認すると、コンテナが再起動を繰り返している
  3. デプロイサーバー上で curl http://localhost:8088 を実行すると、curl: (7) Failed to connect to localhost port 8088: Connection refused エラーが返る
  4. ログファイルにエラースタック情報が出力され続ける

考えられる原因と解決策:

考えられる原因 解決策
手動で設定を変更したが設定に誤りがある 変更した設定ファイルを確認し、YAML 構文やデータベース接続情報が正しいか確認する
設定で外部サーバーを指定しているが、実際にはネットワークに接続できない ファイアウォール、Alibaba Cloud セキュリティグループ設定、データベース接続ホワイトリストなどの設定を確認する
オペレーティングシステムとの互換性問題がある 下記 オペレーティングシステムとの互換性問題 を参照
Redis が現在のシステムの page size をサポートしていない 下記 Redis が現在のシステムの page size をサポートしていない を参照

オペレーティングシステムとの互換性問題

docker logs {Server コンテナ ID} を使用して、以下のようなエラーまたは類似のエラーが表示された場合:

Text Only
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
node[9]: ../src/node_platform.cc:61:std::unique_ptr<long unsigned int> node::WorkerThreadsTaskRunner::DelayedTaskScheduler::Start(): Assertion `(0) == (uv_thread_create(t.get(), start_thread, this))' failed.
 1: 0xb57f90 node::Abort() [node]
 2: 0xb5800e  [node]
 3: 0xbc915e  [node]
 4: 0xbc9230 node::NodePlatform::NodePlatform(int, v8::TracingController*, v8::PageAllocator*) [node]
 5: 0xb1b3d1 node::InitializeOncePerProcess(int, char**, node::InitializationSettingsFlags, node::ProcessFlags::Flags) [node]
 6: 0xb1bc89 node::Start(int, char**) [node]
 7: 0x7f2ca389fd90  [/lib/x86_64-linux-gnu/libc.so.6]
 8: 0x7f2ca389fe40 __libc_start_main [/lib/x86_64-linux-gnu/libc.so.6]
 9: 0xa93f0e _start [node]
Aborted (core dumped)

これは、現在のオペレーティングシステム / コンポーネントと Docker が互換性がないために発生する可能性があります(例:DataFlux Func 2.x には Docker 20.10.8 が同梱されており、最新バージョンのオペレーティングシステムでは問題が発生する可能性があります)

以下の方法を試すことで解決できます:

DataFlux Func を最新版にアップグレードしてください。アップグレード中は、インストールスクリプトが Docker バージョンも同時にアップグレードすることを許可してください。詳細は デプロイとメンテナンス / アップグレードと再起動 / システムのアップグレード を参照してください

最新版の DataFlux Func でも上記の問題が発生する場合は、ユーザーは自分で Docker 公式のバイナリ実行パッケージをダウンロードして、Docker をより新しいバージョンにアップグレードすることもできます。

ダウンロードは Docker 公式ダウンロードサイト https://download.docker.com/linux/static/stable/ にアクセスしてください。

または Alibaba Cloud ミラーサイト https://mirrors.aliyun.com/docker-ce/linux/static/stable/

Ubuntu などの場合は、以下のコマンドでオペレーティングシステムコンポーネントをアップグレードできます:

Bash
1
2
3
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade

Redis が現在のシステムの page size をサポートしていない

公式 Redis イメージを一部の ARM 版オペレーティングシステム上で起動すると、<jemalloc>: Unsupported system page size エラーが発生します。以下を参照してください:

2. Docker Stack 環境でコンテナが存在しない

この問題は通常、実行環境が正しくないために発生します。

具体的には以下のとおりです:

  1. sudo docker stack ls を実行すると dataflux-func が確認できます
  2. sudo docker ps -a を実行しても、対応するコンテナが確認できません
  3. sudo docker stack ps dataflux-func --no-trunc を実行すると、コンテナの状態が正常ではないことが確認できます

考えられる原因と解決策:

考えられる原因 解決策
システムにインストールされているのは Snap 版 Docker Snap 版 Docker をアンインストールし、公式の Docker を再インストールするか、スクリプト付属の Docker を使用してください
その他 sudo docker stack ps dataflux-func --no-truncERROR 列に基づいて調査できます

典型的な例として、no space left on device はディスク容量不足を示します

3. k8s 環境でコンテナを起動できない

この問題は通常、ホストマシン / k8s クラスターの問題が原因で発生します。

k8s では以下のようなエラーが発生する可能性があります:

Text Only
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Events:
  Type     Reason   Age                   From     Message
  ----     ------   ----                  ----     -------
  Warning  Failed   36m                   kubelet  Error: failed to start container "func-server": Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: rootfs_linux.go:60: mounting "/home/cce/kubelet/pods/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/volume-subpaths/user-config/func-server/1" to rootfs at "/home/cce/docker/overlay2/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/merged/data/user-config-template.yaml" caused: no such file or directory: unknown
  Warning  Failed   36m                   kubelet  Error: failed to start container "func-server": Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: rootfs_linux.go:60: mounting "/home/cce/kubelet/pods/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/volume-subpaths/user-config/func-server/1" to rootfs at "/home/cce/docker/overlay2/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/merged/data/user-config-template.yaml" caused: no such file or directory: unknown
  Warning  Failed   36m                   kubelet  Error: failed to start container "func-server": Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: rootfs_linux.go:60: mounting "/home/cce/kubelet/pods/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/volume-subpaths/user-config/func-server/1" to rootfs at "/home/cce/docker/overlay2/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/merged/data/user-config-template.yaml" caused: no such file or directory: unknown
  Normal   Created  35m (x5 over 118d)    kubelet  Created container func-server
  Warning  Failed   35m                   kubelet  Error: failed to start container "func-server": Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: rootfs_linux.go:60: mounting "/home/cce/kubelet/pods/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/volume-subpaths/user-config/func-server/1" to rootfs at "/home/cce/docker/overlay2/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/merged/data/user-config-template.yaml" caused: no such file or directory: unknown
  Normal   Pulled   33m (x6 over 118d)    kubelet  Container image "dataflux-func.com/dataflux-func:2.7.0" already present on machine
  Warning  BackOff  2m8s (x157 over 36m)  kubelet  Back-off restarting failed container

特定の Func サービスでは以下のようなエラーが発生する可能性があります:

Text Only
1
2
3
4
5
6
Traceback (most recent call last):
File "get-config.py", line 11, in <module>
CONFIG = yaml_resource.load_config(os.path.join(BASE_PATH, './config.yaml'))
File "/usr/src/app/worker/utils/yaml_resources.py", line 83, in load_config
user_config_content = _f.read()
OSError: [Errno 5] Input/output error

これは DataFlux Func の問題ではありません、ホストマシン / k8s クラスターを確認してください。NAS を使用している場合は、NAS にも問題がないか確認してください。