apache/openserverless

setup devcluster fails when cockpit is enabled

Opened this issue ยท 1 comments

Hello,
today i tried the ops setup devcluster on a Ubuntu machine which has the cockpit serivce enabled.

The setup failed because the port 9090 (wanted by nuvolaris-worker) is used by default from cockpit service.

ops setup devcluster                                                                                                                                                                                                                                                            [7:33:33]
Creating cluster "nuvolaris" ...
 โœ“ Ensuring node image (kindest/node:v1.25.3) ๐Ÿ–ผ
 โœ— Preparing nodes ๐Ÿ“ฆ ๐Ÿ“ฆ
ERROR: failed to create cluster: command "docker run --name nuvolaris-worker --hostname nuvolaris-worker --label io.x-k8s.kind.role=worker --privileged --security-opt seccomp=unconfined --security-opt apparmor=unconfined --tmpfs /tmp --tmpfs /run --volume /var --volume /lib/modules:/lib/modules:ro -e KIND_EXPERIMENTAL_CONTAINERD_SNAPSHOTTER --detach --tty --label io.x-k8s.kind.cluster=nuvolaris --net kind --restart=on-failure:1 --init=false --volume=/home/bruno/.ops/tmp/kind/data:/data --volume=/home/bruno/.ops/tmp/kind/openwhisk/standalone:/openwhisk/standalone --volume=/home/bruno/.ops/tmp/kind/openwhisk/invoker:/openwhisk/invoker --volume=/home/bruno/.ops/tmp/kind/openwhisk/controller:/openwhisk/controller --volume=/home/bruno/.ops/tmp/kind/couchdb:/couchdb --volume=/home/bruno/.ops/tmp/kind/mongodb:/mongodb --volume=/home/bruno/.ops/tmp/kind/redis:/redis --volume=/home/bruno/.ops/tmp/kind/zookeper/data:/zookeeper/data --volume=/home/bruno/.ops/tmp/kind/zookeeper/log:/zookeeper/log --volume=/home/bruno/.ops/tmp/kind/kafka:/kafka --publish=0.0.0.0:3232:30232/TCP --publish=0.0.0.0:3233:30233/TCP --publish=0.0.0.0:7896:30896/TCP --publish=0.0.0.0:5984:30984/TCP --publish=0.0.0.0:9092:30992/TCP --publish=0.0.0.0:9644:30644/TCP --publish=0.0.0.0:30379:6379/TCP --publish=0.0.0.0:32717:27017/TCP --publish=0.0.0.0:32817:28017/TCP --publish=0.0.0.0:27017:32717/TCP --publish=0.0.0.0:9000:32090/TCP --publish=0.0.0.0:9090:32091/TCP --publish=0.0.0.0:9080:9080/TCP --publish=0.0.0.0:9010:9010/TCP kindest/node:v1.25.3@sha256:f52781bc0d7a19fb6c405c2af83abfeb311f130707a0e219175677e366cc45d1" failed with error: exit status 125
Command Output: 711756c80920db2227f252f5af6487f3358f708af6009bc80ba3cc1a808cf9b4
docker: Error response from daemon: driver failed programming external connectivity on endpoint nuvolaris-worker (a44261ee5b618cabcaf250fc58ae8bab769d174ecce4d9c0dce4e83b996cb7d3): failed to bind port 0.0.0.0:9090/tcp: Error starting userland proxy: listen tcp4 0.0.0.0:9090: bind: address already in use.

What we should do:
A) add some check before creating cluster?
B) document this inside the docker setup page / troubleshooting page?

Notes:

  • the 9090 port is not IANA assigned and is used also by other softwares (example: prometheus).
  • moving the cockpit.socket service to another TCP port obviously solves the problem

we should proably add more preflight tests like for example checking the ports