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
Can you please expand on what all these settings do? Podman on Windows using WSL works great without minikube;
what does step # 2 do? [Edit /etc/containers/containers.conf]
why is docker-ce-cli needed if minikube supports podman? https://minikube.sigs.k8s.io/docs/drivers/podman/