Tip
This is a project shows how to build a Container Platform in a WSL environment. Of course, the same can be applied in a general Linux environment.
Open Settings > Apps > Programs and Features > Turn Windows features on or off dialog and select the Windows Subsystem for Linux to enable WSL on your system. You may reboot your system.
After you have enabled WSL, you can install linux distribution via Microsoft Store. We will use the latest version of Debian linux for the hands-on lab. Open Microsoft Store app and search Debian (Debian 12, Bookworm), and install.
To verify your install, open windows terminal or command terminal and run wsl -l -v command to list WSL distributions. For more details about WSL command, please refer to Basic commands for WSL.
asdf, a multi-runtime version manager is a centralized tool that allows users to easily install and switch between different versions of development tools. The old way of working required multiple CLI (Command Line Interface) version managers, each with their distinct API, configuration files and implementations (e.g., $PATH manipulation, shims, environment variable, etc ...). However, asdf is providing 1/ a single interface and configuration file to simplify development workflow, and can be extended to all tools and runtimes via a simple plugin interface. And it supports 2/ version definitions with one file (.tool-version), you can share with your team ensuring everyone is using the exact same version of tools.
In this example, we will install pre-compiled asdf binary.
- Visit https://github.com/asdf-vm/asdf/releases and download the appropriate archive for your operating system/architecture combination. This is an example to download package for Linux (x86 64-bit architecture).
curl -LO https://github.com/asdf-vm/asdf/releases/download/v0.16.6/asdf-v0.16.6-linux-amd64.tar.gz- Extract the asdf binary in the archive into a directory on your
$PATH($HOME/.local/bin or /usr/local/bin). - Verify asdf is on your shell's
$PATHby runningtype -a asdf. The directory you placed the asdf binary in should be listed on the first line of the output from type.
For more details, please refer to the getting started guide.
Add the following to ~/.bash_profile (bash) or ~/.zshrc (zsh).
export PATH="${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH"kubectl is a command line tool for communicating with a Kubernetes cluster's control plane, using the Kubernetes API.Install kubectl and set current version.
asdf plugin add kubectl
asdf install kubectl 1.32.1
asdf set kubectl 1.32.1
asdf list # or kubectl version --clientTo install the latest version, run asdf install kubectl latest instead of a specific version. And then, you can list all installed versions and switch to version what you want.
asdf list
asdf set kubectl 1.32.1Helm is a package manager for Kubernetes. It uses 'charts' as its package format, which is based on YAML. Helm provides a command line tool to manage helm charts. Install helm.
asdf plugin add helm
asdf install helm 3.17.1
asdf set helm 3.17.1
asdf list # or helm versionKubernetes, is an open-source platform designed to automate the deployment, scaling, and management of containerized applications. And containers are lightweight, portable units that bundle an application with its dependencies, making them easy to move between environments.
Originally designed by Google, Kubernetes is inspired by Google’s internal cluster management system, Borg, it acts as a "cluster operating system" that orchestrates containers across multiple servers/machines, providing high availability, self-healing, and load balancing. As applications scale to hundreds or thousands of containers, manual management becomes impossible. Kubernetes reduces this operational complexity by automating tasks like rollout/rollbacks, storage mounting, and configuration management.
This setup allows you to run Kubernetes locally within WSL, providing a seamless development environment. The simplest way is to access the Kubernetes is provided by Docker Desktop.
Important
WSL2 (WSL Version 2) is required to enable local Kubernetes within WSL. Because WSL1 (WSL Version 1) lacks the necessary kernel features for containerization, specifically namespace and cgroup support.
- WSL1 Limitations: WSL1 acts as a translation layer, mapping Linux kernel calls to the Windows kernel, but it doesn't provide a real Linux kernel. This means it lacks the features needed for containerization, such as namespaces and cgroups, which are fundamental to how containers work.
- WSL2 Requirement: WSL2, on the other hand, runs a virtual machine with a real Linux kernel, allowing for the necessary kernel features to be present. This is why you need WSL2 to run container technologies.
You can check your WSL version by running
wsl -l -vin PowerShell.
Download Docker Desktop from the official website and install. During installation, ensure the option to enable WSL integration is selected.
Once installed, you can verify installation using wsl -l -v command on Windows PowerShell:
NAME STATE VERSION
* Debian Running 2
docker-desktop Running 2
Open Docker Desktop and go to Settings > Resources > WSL Integration to verify if the WSL integration is enabled.
In Docker Desktop, navigate to Settings > Kubernetes and check the box for Enable Kubernetes and click Apply & Restart. Then, wait for Docker Desktop to download the necessary Kubernetes components. The Kubernetes icon will turn green once it's ready.
The default cluster is single-node cluster based on 'Kubeadmin', which is good for almost local test cases. However, some environments need multiple nodes for high-availability deployment. Select kind in the Cluster settings and click Apply & Restart to change the cluster provisioning method. It requires restarting Kubernetes cluster. For more information about KinD (Kubernetes IN Docker), please refer to the instructions of platform lab.
To verify Kubernetes installation, open your linux terminal in WSL and run the following commands to verify Kubernetes is running:
kubectl version --client
kubectl get nodesYou will see nodes, which means your cluster is up and running. If you want more information about enabling Kubernetes with Docker Desktop, please refer to the Deploy on Kubernetes with Docker Desktop.

