6个工具助你在Windows上轻松运行Kubernetes
Kubernetes 主要是一种 Linux 技术,因此在 Linux 上运行它是相当简单的。但 Windows 上的开发人员,可不可以在 Win 上运行 Kubernetes?
答案是肯定的,但需要满足一些条件。
本文将介绍开发人员在 Windows 上顺利运行 Kubernetes 的六种不同的工具和技巧。
Windows 上运行 Kubernetes 有何不同?
在深入研究细节之前,让我们讨论一下究竟是什么让在 Windows 上运行 Kubernetes 集群成为一项挑战。
当我们谈论容器时,大多数时候我们指的是 Linux 容器。您通常会在 Linux 主机上运行 Kubernetes 集群。但在某些情况下,您可能会选择在Windows上运行工作负载。
在这些情况下,您可以在 Windows 主机上运行 Kubernetes 集群,但您应该注意一个限制:
Kubernetes 控制平面只能运行 Linux 主机。
您的工作节点可以在 Windows 主机上运行,但您需要在 Windows 机器上有一台 Linux 主机才能无缝运行 Kubernetes。
可以使用不同的方式在 Windows 主机上创建 Linux 虚拟机。例如,可以使用虚拟机[1]或WSL[2](Linux 的 Windows 子系统)。
在 Windows 上运行 Kubernetes 的工具和技巧
既然知道自己所面临的是什么,那么让我们深入了解可以帮助开发人员在 Windows 上顺利运行 Kubernetes 的工具和技术。
1. 带有 WSL 的原生 Linux 命令
WSL[3]允许您在 Windows 上运行本机 Linux 命令,而无需设置虚拟机。WSL 是 Microsoft 在 Windows 中引入的开创性功能,它使开发人员的生活变得轻松。
在为 Kubernetes 开发云原生应用程序时,使用 Windows 进行本地开发可能是一个障碍。如上面提到的,Kubernetes 控制平面需要一个 Linux 主机;WSL 通过为您提供一些核心 Linux 功能来帮助您在 Windows 上本地运行 Kubernetes。
要在 Windows 上安装 WSL,需要 Windows 10 以上,按 Win+R,然后键入winver
并选择OK,来验证版本。
然后可以使用wsl-install
命令安装 WSL。较旧的 Windows 版本可能不支持此命令。要解决它,请按照官方文档中[4]提到的安装步骤进行操作。
正常情况下,该wsl-install
命令足以在 Windows 上启动和运行 WSL。它负责下载最新的 Linux 内核,将 WSL 2 设置为默认值,并为您安装 Linux 发行版。
或者,也可以从Windows 商店
下载来更改默认的 Linux 发行版。在 Microsoft Store 中,可以搜索 WSL 并从可用的 Linux 发行版中选择一个,例如 Ubuntu、Debian 或 Kali Linux。
第一次启动新安装的 Linux 时,将打开一个控制台窗口,需要为新的 Linux 创建帐户和密码:
2. Windows 上的 Docker Desktop
Windows 上的 Docker Desktop[5] 提供了在 Windows 上创建单节点 Kubernetes 集群的选项。
以下是 Windows 上 Docker Desktop 的前提条件:
Windows 10,更新到版本 2004、Build 1903 或更高版本 使打开或关闭 Windows 功能 验证 WSL 是否已启用。确保Windows Subsystem for Linux功能已打开:
或者,要在 Windows 上启用 WSL,也可以用管理员身份在 PowerShell 上运行该命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
虽然安装[6]在Windows桌面Ubuntu,可以选择WSL2或Hyper-V创建Linux虚拟机。建议使用基于WSL2引擎获得更好的性能[7]。
Docker 启动运行后,通过导航到Settings 启用 Kubernetes 集群。单击边栏中的Kubernetes,然后选中启用 Kubernetes。单击应用并重新启动。
应该在屏幕底部看到:
Docker Running Kubernetes Running
不必单独安装kubectl
即可与 Kubernetes 集群交互,它由 Docker Desktop 本身负责。通过kubectl
在 Windows Powershell 中运行以下命令来验证安装和设置:
PS C:\Users\ac> kubectl get all
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2m36s
PS C:\Users\ac> kubectl get node
NAME STATUS ROLES AGE VERSION
docker-desktop Ready control-plane,master 3m12s v1.21.5
到此,您可以开始将应用程序部署到在 Windows 上运行的本地 Kubernetes 集群。
3.Rancher Desktop
Rancher Desktop[8]是一个用于 Kubernetes 和容器管理的开源桌面应用程序,支持 MacOS 和 Windows。
安装很简单,下载[9]并运行setup.exe
,你需要选择Kubernetes版本:
Docker Desktop 不支持选择 Kubernetes 版本
选择 Kubernetes 版本后,应该会看到以下内容。它将为您下载特定版本。侧边栏中有许多选项(即 Kubernetes 设置、Images等):
还可以通过导航到Kubernetes 设置再次选择不同的 Kubernetes 版本:
除了运行本地 Kubernetes 集群外,您还可以使用 Rancher Desktop 构建、推送和拉取镜像。
4. kind
另一个用于在本地运行它的 Kubernetes SIG 项目,kind
是Docker 中 Kubernetes 的缩写[10]。您可以将 Kubernetes 作为 Docker 容器运行,而不是生成 VM。kind
相比minikube
,启动时间更快。
由于kind
将 Kubernetes 集群作为 Docker 容器运行,因此需要在机器上安装 Docker。在 Windows 上,您可以使用Chocolatey[11]包管理器安装。
如果您还没有安装 Docker,kind
也会为您安装docker-desktop
。
可以运行choco install kind -y
命令来安装它。运行命令后,应该会看到以下输出:
PS C:\WINDOWS\system32> choco install kind -y
Chocolatey v0.10.15
Installing the following packages:
kind
By installing you accept licenses for the packages.
Progress: Downloading kind 0.11.1... 100%
kind v0.11.1 [Approved]
kind package files install completed. Performing other installation steps.
Downloading kind 64 bit
from 'https://github.com/kubernetes-sigs/kind/releases/download/v0.11.1/kind-windows-amd64'
Progress: 100% - Completed download of C:\ProgramData\chocolatey\lib\kind\kind.exe (6.58 MB).
Download of kind.exe (6.58 MB) completed.
Hashes match.
ShimGen has successfully created a shim for kind.exe
The install of kind was successful.
您可以运行kind --version
命令验证。
现在您可以使用kind create cluster
命令创建本地 Kubernetes:
PS C:\WINDOWS\system32> kind create cluster
Creating cluster "kind" ...
• Ensuring node image (kindest/node:v1.21.1) 🖼 ...
✓ Ensuring node image (kindest/node:v1.21.1) 🖼
• Preparing nodes 📦 ...
✓ Preparing nodes 📦
• Writing configuration 📜 ...
✓ Writing configuration 📜
• Starting control-plane 🕹️ ...
✓ Starting control-plane 🕹️
• Installing CNI 🔌 ...
✓ Installing CNI 🔌
• Installing StorageClass 💾 ...
✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
Thanks for using kind! 😊
PS C:\WINDOWS\system32> kubectl get nodes
NAME STATUS ROLES AGE VERSION
kind-control-plane Ready control-plane,master 27m v1.21.1
kind
至少需要 8 GB 的 RAM 才能顺利运行。使用该以下命令:
kind load docker-image my-image:latest
您可以直接将Image load
到集群中,而无需将其推送到Registry。
5.minikube
minikube[12]是运行本地 Kubernetes 集群最流行的选项,原因如下:
它可以部署在 VM、裸机或 Docker 容器上 它支持不同的容器运行时(Docker、containerd 等) 它对 Kubernetes 仪表板和负载均衡提供开箱即用的支持 它支持各种 VM 驱动[13]
您可以直接下载并运行.exe
,或者使用像 Chocolatey 包管理器来安装。
可以运行choco install minikube
命令来安装:
PS C:\WINDOWS\system32> choco install minikube
Chocolatey v0.10.15
Installing the following packages:
minikube
By installing you accept licenses for the packages.
Progress: Downloading kubernetes-cli 1.22.2... 100%
Progress: Downloading Minikube 1.23.2... 100%
.................
Minikube v1.23.2 [Approved]
minikube package files install completed. Performing other installation steps.
ShimGen has successfully created a shim for minikube.exe
The install of minikube was successful.
现在运行minikube start
命令来启动本地 Kubernetes 集群。
PS C:\WINDOWS\system32> minikube start --driver=docker
* minikube v1.23.2 on Microsoft Windows 10 Pro 10.0.18363 Build 18363
* Using the docker driver based on user configuration
* Starting control plane node minikube in cluster minikube
* Pulling base image ...
> gcr.io/k8s-minikube/kicbase: 355.40 MiB / 355.40 MiB 100.00% 3.32 MiB p/
* Creating docker container (CPUs=2, Memory=2200MB) ...
* Preparing Kubernetes v1.22.2 on Docker 20.10.8 ...
- Generating certificates and keys ...
- Booting up control plane ...
- Configuring RBAC rules ...
* Verifying Kubernetes components...
- Using image gcr.io/k8s-minikube/storage-provisioner:v5
* Enabled addons: default-storageclass, storage-provisioner
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
PS C:\WINDOWS\system32> kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane,master 7m57s v1.22.2
现在您可以开始将应用程序部署到 minikube。
6. Lens
Lens[14]是适用于 macOS、Windows 和 Linux 的开源桌面应用程序,可管理 Kubernetes 集群。
您可以在此处下载 Windows 版本[15],并使用它来查看和管理 Kubernetes 集群的状态。它提供了管理多集群、支持各种 Kubernetes 发行版、轻松调试以及支持管理 Helm Charts 等功能。
安装完成后,应该会看到以下内容。Lens IDE 自动检测 kubeconfig 文件并将它添加到 Lens 目录中:
在下图中,请注意在Catalog > Categories > Clusters 下,列出了两个本地 Kubernetes 集群:
docker-desktop rancher-desktop
Lens IDE 从 kubeconfig 文件中找出了这些信息。接下来,您将连接到rancher-desktop
Kubernetes 集群。
连接到rancher-desktop
本地 Kubernetes 集群后,您会看到一些Pod、Deployment等工作负载运行在kube-system命名空间
。
Lens IDE 的另一个重要功能是您只需单击即可安装 Helm Charts。Lens IDE 将在 Apps 部分显示已配置的 Helm 存储库(默认配置为 Bitnami)中所有Charts。
以下显示了的是 NGINX:
要安装Chart,只需选择它并单击 安装。
结论
Linux 的 Windows 子系统有助于弥合 Windows 和 Linux 之间的差距。使用 Docker Desktop、minikube、kind 和 Rancher Desktop 等工具,在 Windows 本地运行 Kubernetes 集群仍然是一种不错的体验。
在 Win上监控方案[16] 也可以选择Prometheus + exporter方案,这些都可以轻松运行在 Win 上。
使用这些工具,在 Windows 上开发和测试 Kubernetes 应用程序应该也会变得简单。
翻译自:https://loft.sh/blog/kubernetes-on-windows-6-life-saving-tools-and-tips/
参考资料
[1]虚拟机: https://www.virtualbox.org/
[2]WSL: https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux
[3]WSL: https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux
[4]官方文档中: https://docs.microsoft.com/en-us/windows/wsl/install-manual
[5]Windows 上的 Docker Desktop: https://docs.docker.com/desktop/windows/install/
[6]安装: https://docs.docker.com/desktop/windows/install/
[7]建议使用基于WSL2引擎获得更好的性能: https://docs.docker.com/desktop/windows/wsl/
[8]Rancher Desktop: https://rancherdesktop.io/
[9]下载: https://github.com/rancher-sandbox/rancher-desktop/releases
[10]Docker 中 Kubernetes 的缩写: https://kind.sigs.k8s.io/docs/user/quick-start/
[11]Chocolatey: https://chocolatey.org/
[12]minikube: https://minikube.sigs.k8s.io/docs/
[13]驱动: https://minikube.sigs.k8s.io/docs/drivers/
[14]Lens: https://k8slens.dev/
[15]在此处下载 Windows 版本: https://k8slens.dev/
[16]Win上监控方案: https://sysdig.com/blog/monitoring-windows-prometheus/
推荐阅读
点赞👍 星标✨ 在看 👁 让我看见你们!!
本公众号主要分享linux、Golang、网络、云原生相关技术,实用工具,欢迎扫码关注!
点个在看你最好看