Lewati ke isi

Pemecahan Masalah / Kontainer tidak dapat berjalan normal

1. Kontainer mengalami restart berulang kali di lingkungan Docker Stack

Masalah ini umumnya disebabkan oleh konfigurasi, firewall, dan berbagai pengaturan whitelist yang salah.

Gejala spesifiknya adalah:

  1. Halaman tidak dapat dibuka menggunakan browser
  2. Saat menggunakan perintah sudo docker ps -a untuk melihat daftar kontainer, ditemukan bahwa kontainer terus-menerus melakukan restart
  3. Di server deployment itu sendiri, penggunaan curl http://localhost:8088 mengembalikan error curl: (7) Failed to connect to localhost port 8088: Connection refused
  4. File log terus-menerus mengeluarkan informasi stack trace error

Kemungkinan penyebab dan solusi:

Kemungkinan Penyebab Solusi
Konfigurasi diubah secara manual tetapi ada kesalahan pada konfigurasi Periksa file konfigurasi yang diubah, periksa apakah sintaks YAML, informasi koneksi database, dan lain-lain sudah benar
Konfigurasi yang diubah menunjuk ke server eksternal, tetapi jaringan sebenarnya tidak dapat terhubung Periksa firewall, konfigurasi security group Alibaba Cloud, whitelist koneksi database, dan konfigurasi lainnya
Ada masalah kompatibilitas dengan sistem operasi Lihat bagian masalah kompatibilitas dengan sistem operasi di bawah ini
Redis tidak mendukung page size sistem saat ini Lihat bagian Redis tidak mendukung page size sistem saat ini di bawah ini

Masalah kompatibilitas dengan sistem operasi

Jika Anda menggunakan docker logs {ID Kontainer Server} dan menemukan error berikut atau yang serupa:

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)

Ini mungkin disebabkan oleh ketidakcocokan antara sistem operasi/komponen saat ini dengan Docker (misalnya: DataFlux Func 2.x dilengkapi dengan Docker 20.10.8, yang mungkin bermasalah pada sistem operasi versi terbaru)

Berikut metode yang dapat dicoba untuk mengatasinya:

Upgrade DataFlux Func ke versi terbaru. Selama proses upgrade, izinkan Skrip instalasi untuk sekaligus meng-upgrade versi Docker. Lihat detail di Penerapan dan Pemeliharaan / Upgrade dan Restart / Upgrade Sistem

Jika DataFlux Func versi terbaru masih mengalami masalah di atas, pengguna juga dapat mengunduh paket biner resmi Docker untuk meng-upgrade Docker ke versi yang lebih baru.

Silakan kunjungi unduhan resmi Docker untuk mengunduh https://download.docker.com/linux/static/stable/

Atau situs mirror Alibaba Cloud https://mirrors.aliyun.com/docker-ce/linux/static/stable/

Misalnya pada Ubuntu, komponen sistem operasi dapat di-upgrade dengan perintah berikut:

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

Redis tidak mendukung page size sistem saat ini

Saat image resmi Redis dijalankan pada sistem operasi ARM tertentu, akan terjadi error <jemalloc>: Unsupported system page size. Lihat:

2. Kontainer tidak ada di lingkungan Docker Stack

Masalah ini umumnya disebabkan oleh lingkungan runtime yang tidak benar.

Gejala spesifiknya adalah:

  1. Jalankan sudo docker stack ls untuk melihat dataflux-func
  2. Jalankan sudo docker ps -a dan tidak melihat kontainer yang sesuai
  3. Jalankan sudo docker stack ps dataflux-func --no-trunc, dan temukan status kontainer tidak normal

Kemungkinan penyebab dan solusi:

Kemungkinan Penyebab Solusi
Docker versi Snap terpasang di sistem Copot pemasangan Docker versi Snap, instal ulang Docker dari jalur resmi, atau gunakan Docker yang disertakan dengan Skrip
Lainnya Dapat ditelusuri berdasarkan kolom ERROR pada sudo docker stack ps dataflux-func --no-trunc

Contoh umumnya adalah no space left on device yang berarti ruang disk tidak cukup.

3. Kontainer tidak dapat dimulai di lingkungan k8s

Masalah ini umumnya disebabkan oleh masalah pada host / cluster k8s.

Kesalahan berikut mungkin terjadi di 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

Kesalahan berikut mungkin terjadi pada salah satu layanan 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

Ini bukan masalah DataFlux Func, silakan periksa host / cluster k8s, dan jika melibatkan penggunaan NAS, periksa juga apakah NAS bermasalah.