Skip to content

Instantly share code, notes, and snippets.

@pwFoo
Forked from ibuildthecloud/README.md
Created June 21, 2019 04:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pwFoo/6589d7b074e3efe17c7de725f575b4fd to your computer and use it in GitHub Desktop.
Save pwFoo/6589d7b074e3efe17c7de725f575b4fd to your computer and use it in GitHub Desktop.
k3s on WSL2

Instructions to hack up WSL2 on Windows 10 Build 18917 to run k3s (Kubernetes) and rio

Install WSL2

https://docs.microsoft.com/en-us/windows/wsl/wsl2-install

I already had Ubuntu-18.04 installed in wsl 1. So I just did wsl --set-version Ubuntu-18.04 2

Compile Kernel

Using Ubuntu 18.04 (I'm sure any distro will work), inside WSL2 download https://thirdpartysource.microsoft.com/download/Windows%20Subsystem%20for%20Linux%20v2/May%202019/WSLv2-Linux-Kernel-master.zip and extract to a folder.

In the extracted kernel source run

# Install basically "compile kernel" crap
sudo apt install build-essential flex bison libssl-dev libelf-dev

# Setup kernel config
cp Microsoft/config-wsl .config
cat >> .config << EOF
CONFIG_BRIDGE_NETFILTER=y
CONFIG_NETFILTER_XT_MATCH_COMMENT=y
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
CONFIG_NETFILTER_XT_MATCH_OWNER=y
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=y
CONFIG_VXLAN=y
CONFIG_GENEVE=y
EOF
make oldconfig

# Compile and drink beverage of choice
make -j $(nproc)

Update WSL kernel

  1. Copy arch/x86/boot/bzImage to somewhere outside WSL2 (/mnt/c/Users/${USER}/Desktop)
  2. Shutdown WSL2 wsl --shutdown
  3. Copy bzImage to c:\Windows\System32\lxss\tools\kernel. Make sure you backup the existing kernel file (although the original is still in another location). I had to copy through explorer.exe because of permissions issues.

Install K3s

You can't install k3s using the curl script because there is no supervisor (systemd or openrc) in WSL2.

  1. Download k3s binary from https://github.com/rancher/k3s/releases/latest
  2. chmod +x k3s
  3. Run k3s sudo ./k3s server

Setup access

  1. Copy /etc/rancher/k3s/k3s.yaml from WSL to your home in Windows to %HOME%.kube\config. Edit the copied file and change the server URL from https://localhost:6443 to the IP of the your WSL2 instance (ip addr show dev eth0). So something like https://192.168.170.170:6443.
  2. Run kubectl from windows (got to download kubectl.exe from somewhere)

Bonus Install Rio

  1. Download rio-windows-amd64 from https://github.com/rancher/rio/releases/tag/v0.2.0-rc1 to rio.exe
  2. Run ./rio install
  3. Start doing stuff with rio :)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment