Deploying Apache OpenWhisk on a DIY Kubernetes cluster can throw a couple of curveballs. Here's a quick rundown of the snags I hit and how I untangled them.
GitHub cloning hiccups in initCouchDB and installPackages
The Problem: Due to network issues, the setup scripts couldn't clone from GitHub.
The Fix: Tweak the scripts initdb.sh and myTask.sh under helm/openwhisk/configMapFiles/initCouchDB/ to point to a mirror instead of github.com/apache/openwhisk.
JVM Bus Error in Controller and Invoker Pods
The Problem: JVM threw a bus error raised by JIT compilation, crashing both the controller and invoker pods.
The Fix: Disable JIT and boost the heap size to 16GB to stabilize the JVM.
Deploying Apache OpenWhisk on a DIY Kubernetes cluster can throw a couple of curveballs. Here's a quick rundown of the snags I hit and how I untangled them.
GitHub cloning hiccups in
initCouchDB
andinstallPackages
The Problem: Due to network issues, the setup scripts couldn't clone from GitHub.
The Fix: Tweak the scripts
initdb.sh
andmyTask.sh
underhelm/openwhisk/configMapFiles/initCouchDB/
to point to a mirror instead ofgithub.com/apache/openwhisk
.JVM Bus Error in Controller and Invoker Pods
The Problem: JVM threw a bus error raised by JIT compilation, crashing both the controller and invoker pods.
The Fix: Disable JIT and boost the heap size to 16GB to stabilize the JVM.
Probes for controller getting axed by Kubernetes
The Problem: Kubernetes was terminating controller pod for taking too long, as we disabled JIT.
The Fix: Set the readiness probe timeout to a generous 180 seconds to avoid premature termination.
Custom Kubernetes DNS Configuration
The Problem: Needed to align DNS settings with DIY cluster setup, otherwise will fail Nginx pod.
The Fix: Specify the DNS service (RKE2 in my case) in the cluster config.