我有 Mac 和 Windows,这些年折腾软件方面的环境 Linux 用得比较多,最近想安装一个 Kubernetes 的本地环境,本着 “生命不息,折腾不止” 的精神,打算在 Windows 上动手。了解到可以尝试 Minikube,在此简单记录一下。
首先得要安装 Docker,但是在 Windows 下跑 Docker 有两种方式,WSL(Windows Subsystem for Linux)或者 Hyper-V。我首先把这些 Windows 组件都勾上:
我两条路都去走了一下,为了使用 Hyper-V,我还去 BIOS 里面打开虚拟化支持的选项。不过,后来才知道,因为操作系统版本是 Windows 10 Home,虽说 Windows 上面跑 docker 有两种方式:
- 一种是使用 WSL
- 另一种是使用 Hyper-V
但在 Windows 10 Home 版本上只支持第一种。由于 Hyper-V 本质上是额外的虚拟机,而 WSL 更新,是虚拟化的 Linux 环境,是 Windows 操作系统原生支持的,性能要好一些。
其实,在 Docker 的设置里面也有说了:
可以列出所有 WSL(我使用的 WSL 2)目前支持的 Linux Distributions:
wsl --list --online
可以选一两个自己熟悉的安装了体验一下:
wsl --install Ubuntu
wsl --install Debian
整个 Windows 的文件系统都可以以 Linux 的方式访问。以往我一般在 Windows 上运行 Linux 命令都是使用 Cygwin 的,但是现在我了解到两者很不相同,WSL 是真正的虚拟化 Linux 环境,而 Cygwin 只不过把一些 Linux 命令编译成 Windows 的二进制版本。
安装 Minikube 和相关工具,配置环境变量。这次学到了可以用 Chocolatey,它是 Windows 下的软件安装工具。比如:
choco install kubernetes-cli
Minikube 可以以 VM、container,甚至 bare metal(Windows 下不支持)的方式来运行,通过 driver 参数指定。
我们使用 docker,这也是官方认定 preferred 的一种方式。这种方式下,Minikube 应用本身会作为 Docker container 跑在 Docker 里面(driver 的含义),同时,Minikube 也会使用 Docker 来跑其它的应用 container。
minikube config set driver docker
minikube delete
minikube start --driver=docker
看一下状态:
Done! kubectl is now configured to use “minikube” cluster and “default” namespace by default
看一下状态:
minikube status
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
此外,检查一下 WSL 已经安装的 Linux subsystem,能看到:
wsl -l
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
docker-desktop
Debian
在 Docker 的 UI 上,也能看到:
跑起来以后,用 kubectl 验证一下:
kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:57514
查看所有 namespace:
kubectl get pods –all-namespaces
启动 dashboard:
minikube dashboard
接着,创建和部署一个 hello minikube 的 service:
kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube --type=NodePort --port=8080
kubectl get services hello-minikube
通过访问:
minikube addons list
可以列出一堆可以立即安装的 addon,有一些是 K8s 的,有一些是 minikube 的,比如:
minikube addons enable auto-pause
这个可以在一段时间没有使用的情况下,暂停 K8s。
还有一个 addon 能让 dashboard 的 metrics 显示更多信息:
minikube addons enable metrics-server
后来,一通折腾以后发现,原来 Docker 的 settings 里面已经有了一个 Kubernetes 选项:
原来新版本的 Docker 里面自带了一套 K8s,它是完全跑在 Docker instance 里面,并且无法配置的,主要用于本地测试。它的运行也是基于 WSL。
现在就试一下,停掉 Minikube:
minikube stop
UI 确认确实停了(或者 docker ps):
然后把 Docker 的 Kubernetes tab 上面的两个选项都勾上,apply & restart。
不过等了好久,似乎卡在这一步了,我 reset 并且更新 Docker 以后,问题解决。打开以后我看到 Docker 启动了一堆 container。确认跑起来也没问题:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker-desktop Ready control-plane 10m v1.30.2
文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》