为了账号安全,请及时绑定邮箱和手机立即绑定

6个工具帮助你在Windows上轻松运行Kubernetes

标签:
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 虚拟机。例如,可以使用虚拟机WSL(Linux 的 Windows 子系统)。

在 Windows 上运行 Kubernetes 的工具和技巧

既然知道自己所面临的是什么,那么让我们深入了解可以帮助开发人员在 Windows 上顺利运行 Kubernetes 的工具和技术。

1. 带有 WSL 的原生 Linux 命令

WSL允许您在 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 版本可能不支持此命令。要解决它,请按照官方文档中提到的安装步骤进行操作。

正常情况下,该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 提供了在 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

虽然安装在Windows桌面Ubuntu,可以选择WSL2或Hyper-V创建Linux虚拟机。
建议使用基于WSL2引擎获得更好的性能

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是一个用于 Kubernetes 和容器管理的开源桌面应用程序,支持 MacOS 和 Windows。

安装很简单,下载并运行setup.exe,你需要选择Kubernetes版本:

Docker Desktop 不支持选择 Kubernetes 版本

选择 Kubernetes 版本后,应该会看到以下内容。它将为您下载特定版本。侧边栏中有许多选项(即 Kubernetes 设置、Images等):

还可以通过导航到Kubernetes 设置再次选择不同的 Kubernetes 版本:

除了运行本地 Kubernetes 集群外,您还可以使用 Rancher Desktop 构建、推送和拉取镜像。

4. kind

另一个用于在本地运行它的 Kubernetes SIG 项目,kindDocker 中 Kubernetes 的缩写。您可以将 Kubernetes 作为 Docker 容器运行,而不是生成 VM。kind相比minikube,启动时间更快。

由于kind将 Kubernetes 集群作为 Docker 容器运行,因此需要在机器上安装 Docker。在 Windows 上,您可以使用Chocolatey包管理器安装。

如果您还没有安装 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是运行本地 Kubernetes 集群最流行的选项,原因如下:

  • 它可以部署在 VM、裸机或 Docker 容器上
  • 它支持不同的容器运行时(Docker、containerd 等)
  • 它对 Kubernetes 仪表板和负载均衡提供开箱即用的支持
  • 它支持各种 VM 驱动

您可以直接下载并运行.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是适用于 macOS、Windows 和 Linux 的开源桌面应用程序,可管理 Kubernetes 集群。

您可以在此处下载 Windows 版本,并使用它来查看和管理 Kubernetes 集群的状态。它提供了管理多集群、支持各种 Kubernetes 发行版、轻松调试以及支持管理 Helm Charts 等功能。

安装完成后,应该会看到以下内容。 Lens IDE 自动检测 kubeconfig 文件并将它添加到 Lens 目录中:

在下图中,请注意在Catalog > Categories > Clusters 下,列出了两个本地 Kubernetes 集群:

  • docker-desktop
  • rancher-desktop

Lens IDE 从 kubeconfig 文件中找出了这些信息。接下来,您将连接到rancher-desktopKubernetes 集群。

连接到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上监控方案 也可以选择Prometheus + exporter方案,这些都可以轻松运行在 Win 上。

使用这些工具,在 Windows 上开发和测试 Kubernetes 应用程序应该也会变得简单。


作者简洁

作者:小碗汤,一位热爱、认真写作的小伙,专注于写go语言、docker、kubernetes、java等开发、运维知识等提升硬实力的文章,期待你的关注。转载说明:务必注明来源

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
5
获赞与收藏
22

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消