NEWS
Kube Pod restart, 'Cannot find module '../iobroker.js'
-
Hallo,
ich betreibe IOBroker in einem Kubernetes Cluster als Statefullset. Nach dem mir der Pod durch einen Node-Restart einmal abgeräumt wurde, startet dieser nicht mehr ordnungsgemäß.
Systemdata Hardwaresystem: Pi4 Kubernetes Cluster Arbeitsspeicher: jeweils 8GB Festplattenart: SSD Betriebssystem: Ubuntu Installationsart: kubernetes statefullset Image genutzt: ja Ort/Name der Imagedatei: iobroker/iobroker:latest-v7@sha256:534f5ef0d23ceafabddee2fdfea9816848b454e75d936bb5bc934640b8321d69 Log-Ausgabe:
-------------------------------------------------------------------------------- ------------------------- 2022-09-10 22:43:40 ------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----- Welcome to your ioBroker-container! ----- ----- Startupscript is now running. ----- ----- Please be patient! ----- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----- Debugging information ----- ----- ----- ----- System ----- ----- arch: aarch64 ----- ----- hostname: iobroker-0 ----- ----- ----- ----- Docker-Image ----- ----- image: v7.0.1 ----- ----- build: 2022-07-05T18:51:49+00:00 ----- ----- ----- ----- Versions ----- ----- node: v14.19.3 ----- ----- npm: 6.14.17 ----- ----- ----- ----- ENV ----- ----- IOB_ADMINPORT: 8081 ----- ----- SETGID: 1000 ----- ----- SETUID: 1000 ----- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----- Step 1 of 5: Preparing container ----- -------------------------------------------------------------------------------- Updating Linux packages on first run... # gekürzt 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Done. Registering maintenance script as command... Done. Installing additional packages is set by ENV. Checking the following Packages: ... Reading package lists... Building dependency tree... Reading state information... Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Done. -------------------------------------------------------------------------------- ----- Step 2 of 5: Detecting ioBroker installation ----- -------------------------------------------------------------------------------- Existing installation of ioBroker detected in /opt/iobroker. -------------------------------------------------------------------------------- ----- Step 3 of 5: Checking ioBroker installation ----- -------------------------------------------------------------------------------- (Re)Setting folder permissions (This might take a while! Please be patient!)... Done. Fixing "sudo-bug" by replacing sudo in iobroker with gosu... Done. internal/modules/cjs/loader.js:905 throw err; ^ Error: Cannot find module '/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15) at Function.Module._load (internal/modules/cjs/loader.js:746:27) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12) at internal/main/run_main_module.js:17:47 { code: 'MODULE_NOT_FOUND', requireStack: [] } /opt/scripts/iobroker_startup.sh: line 212: [: !=: unary operator expected -------------------------------------------------------------------------------- ----- Step 4 of 5: Applying special settings ----- -------------------------------------------------------------------------------- Some adapters have special requirements/ settings which can be activated by the use of environment variables. For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/). internal/modules/cjs/loader.js:905 throw err; ^ Error: Cannot find module '/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15) at Function.Module._load (internal/modules/cjs/loader.js:746:27) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12) at internal/main/run_main_module.js:17:47 { code: 'MODULE_NOT_FOUND', requireStack: [] } /opt/scripts/iobroker_startup.sh: line 236: [: 8081: unary operator expected -------------------------------------------------------------------------------- ----- Step 5 of 5: ioBroker startup ----- -------------------------------------------------------------------------------- Starting ioBroker... internal/modules/cjs/loader.js:905 throw err; ^ Error: Cannot find module '/opt/iobroker/node_modules/iobroker.js-controller/controller.js' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15) at Function.Module._load (internal/modules/cjs/loader.js:746:27) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12) at internal/main/run_main_module.js:17:47 { code: 'MODULE_NOT_FOUND', requireStack: [] }
Auf den ersten Blick sieht es so aus, als gäbe es die iobroker.js und die controller.js-Datei nicht gibt. Die Dateien sind jedoch existent und werden scheinbar dennoch nicht gefunden.
root@iobroker-0:/opt/iobroker# head node_modules/iobroker.js-controller/controller.js /** * Redirect for older installations * * Copyright 2018-2022 bluefox <dogafox@gmail.com>, * MIT License * */ require('./main').init(); root@iobroker-0:/opt/iobroker# cd node_modules/iobroker.js-controller/ && ls -la total 368 drwxrwxr-x+ 6 iobroker iobroker 4096 Sep 10 22:39 . drwxrwxrwx+ 522 iobroker iobroker 20480 Sep 10 22:33 .. -rw-rwxr--+ 1 iobroker iobroker 420 Okt 26 1985 compactgroupController.js drwxrwxr-x+ 2 iobroker iobroker 4096 Sep 10 22:32 conf -rw-rwxr--+ 1 iobroker iobroker 158 Okt 26 1985 controller.js -rwxrwxr-x+ 1 iobroker iobroker 34 Okt 26 1985 iobroker.js -rw-rwxr--+ 1 iobroker iobroker 54395 Okt 26 1985 io-package.json drwxrwxr-x+ 9 iobroker iobroker 4096 Sep 10 22:32 lib -rw-rwxr--+ 1 iobroker iobroker 1135 Okt 26 1985 LICENSE -rw-rwxr--+ 1 iobroker iobroker 249293 Okt 26 1985 main.js drwxrwxr-x+ 7 iobroker iobroker 4096 Sep 10 22:32 node_modules -rw-rwxr--+ 1 iobroker iobroker 4503 Sep 10 22:32 package.json -rw-rwxr--+ 1 iobroker iobroker 193 Okt 26 1985 README.md drwxrwxr-x+ 2 iobroker iobroker 4096 Sep 10 22:32 tmp root@iobroker-0:/opt/iobroker/node_modules/iobroker.js-controller# head iobroker.js require('./lib/setup').execute();
Ist das Problem bekannt? Hat jemand einen Rat dies zu beheben?
Temporär lässt sich iobroker via
root@iobroker-0:/opt/iobroker# sudo node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js start
starten. Hilft nur nicht, wenn der Pod wieder terminiert und neustartet.Beste Grüße, Matthias
StatefullSet-Definition:
resource "kubernetes_stateful_set" "iobroker" { metadata { name = "iobroker" namespace = kubernetes_namespace.smartmeter_namespace.id } spec { service_name = "iobroker" revision_history_limit = 5 selector { match_labels = { "app.kubernetes.io/instance" : "iobroker" "app.kubernetes.io/name" : "iobroker" } } volume_claim_template { metadata { name = "iobroker-data" } spec { access_modes = ["ReadWriteOnce"] storage_class_name = "openebs-jiva-csi-default" resources { requests = { storage = "10Gi" } } } } template { metadata { name = "iobroker" labels = { "app.kubernetes.io/instance" : "iobroker" "app.kubernetes.io/name" : "iobroker" } } spec { container { name = "iobroker" image = "iobroker/iobroker:latest-v7@sha256:534f5ef0d23ceafabddee2fdfea9816848b454e75d936bb5bc934640b8321d69" port { name = "http" container_port = 8081 } port { name = "httpui" container_port = 8082 } volume_mount { name = "iobroker-data" mount_path = "/opt/iobroker" } env { name = "IOB_ADMINPORT" value = "8081" } } } } } }
Users & Permissions
root@iobroker-0:/opt# cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534::/nonexistent:/usr/sbin/nologin _rpc:x:101:65534::/run/rpcbind:/usr/sbin/nologin statd:x:102:65534::/var/lib/nfs:/usr/sbin/nologin iobroker:x:1000:1000::/opt/iobroker:/bin/bash root@iobroker-0:/opt# stat /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js File: /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js Size: 34 Blocks: 8 IO Block: 4096 regular file Device: 810h/2064d Inode: 399354 Links: 1 Access: (0775/-rwxrwxr-x) Uid: ( 1000/iobroker) Gid: ( 1000/iobroker) Access: 2022-09-10 23:24:57.083078730 +0200 Modify: 1985-10-26 09:15:00.000000000 +0100 Change: 2022-09-10 22:47:17.530576383 +0200 Birth: 2022-09-10 22:32:50.225830721 +0200