Tips for running a single-node Kubernetes cluster on WSL2 with Podman
-
Edit
/etc/containers/containers.conf
:- Set
cgroup_manager
tocgroupfs
- Set
events_logger
tofile
- Set
-
Run
minikube start --driver=podman
-
Enable minikube local registry addon:
minikube addons enable registry
-
Install docker-ce-cli package for your distro
-
Configure the environment to use minikube's Docker daemon (ie.
eval $(minikube -p minikube docker-env)
) -
Push/pull images to/from
localhost:5000/imagename
Note: Instead of pushing/pulling images into/from the registry, you can build and tag an image and set containers' imagePullPolicy
to IfNotPresent
or Never
-
Make sure minikube is started (ie. run
minikube start
) -
Open an elevated PowerShell prompt and execute the following commands:
# Run "wsl --list" and make sure the default WSL distro is set correctly $minikube_ip = "$(wsl minikube ip)" $wsl_ip = "$(wsl sh -c "ip addr show `$(ip route list default | grep -Po ' dev \K\w+') | grep -Po ' inet \K[\d.]+'")" route delete $minikube_ip 2>&1 | Out-Null route add $minikube_ip mask 255.255.255.255 $wsl_ip
Note: You can also route the whole podman network subnet instead of only the minikube ip
Note: Instructions above should be followed after every restart
Some distros like Debian, use the nftables framework by default. So in case of getting error messages like:
Error adding network: failed to list chains: running [...] iptables [...] (nf_tables)
Try switching to the legacy version of iptables.
The timeout value for timedCreateHost
is currently hardcoded in the Minikube source-code!
In case minikube terminates with an error message like:
StartHost failed, but will try again: creating host: create host timed out in 240.000000 seconds
Try pulling the image manually before starting minikube:
BASE_IMAGE="$(minikube start --help | sed -En "s:^.*base-image='([^@]+).*:\1:p")"
sudo podman pull $BASE_IMAGE
@fardjad interesting; I would like to update the gist; I would like to stay away from docker due to the enterprise licensing requirements. I'd like to use WSL, Podman for Windows (uses WSL machine) and Any good K8s for Desktop distribution (minikube, etc). If you have guidance, I would much appreciate it; I have tried rootless podman + minikube on Windows, but this does not seem to work; I will try rootful config next