试着在 Windows 10 PC 上玩 docker 和 Kubernetes。作为容器管理平台,Kubernetes 可以被安装并运行在不同类型的环境下,包括开发者的笔记本电脑,或是云服务商的VM,甚至是一组裸机上……
参考官方文档 [Picking the Right Solution](https://kubernetes.io/docs/setup/pick-right-solution/) 找到了适合创建单机单节点 Kubernetes Cluster 的 [Minikube](https://kubernetes.io/docs/getting-started-guides/minikube/#minikube-features)。
Minikube 提供的特性包括:
* DNS
* NodePorts
* ConfigMaps and Secrets
* Dashboards
* Container Runtime: Docker, rkt and CRI-O
* and etc.
安装 Minucube 的步骤看起来也挺简单的,先要 PC 的 BIOS 支持 VT-x 或是 AMD-v 虚拟技术,这年头只要不是太老的 PC 都行。接着需要在 OS 里装一个 Hypervisor,对 Windows 而言常见的就是 VirtualBox 或者 Hyper-V。
之前为了安装 Docker for Windows 卸载了 VirtualBox 改用 Hyper-V,因为 docker 的文档 [Machine Driver](https://docs.docker.com/machine/drivers/hyper-v/) 里明说了:
> Hyper-V must be enabled on your desktop system. Docker for Windows automatically enables it upon install
谁让人家是微软的亲儿子捏?
接着要安装 `kubectl` 这是 Kubernetes 的 CLI (命令行工具),在 Windows 10 里可以利用 Chocolatey 包管理器来[代为安装](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-with-chocolatey-on-windows)。
最后到了 minikube 这里也是可以通过 Chocolatey 来安装的,只是接下来按照 [Quick Start](https://kubernetes.io/docs/getting-started-guides/minikube/#quickstart) 试着启动 Minikube 不太顺利…… 错误代码指出和 VirtualBox 有关系,很快从文档内找到需要一个参数来告诉 Minikube 使用的是 hyperv:
minikube start --vm-driver hyperv
可惜还是报错,可以在 CLI 内看到它下载某个 image 并试着启动,但是挂了。查了不少文档后最后在微软的 techblog 发现了这一救命文 [Setting up Kubernetes on Windows10 Laptop with Minikube](https://blogs.msdn.microsoft.com/wasimbloch/2017/01/23/setting-up-kubernetes-on-windows10-laptop-with-minikube/)。
简单来说问题在于需要为 Hyper-V 创建一个虚拟的交换机,将这个虚拟交换机的名字作为参数传入。
minikube start --kubernetes-version="v1.7.5" --vm-driver="hyperv" --memory=2048 --hyperv- virtual-switch="Minikube Virtual Switch" --v=7 --alsologtostderr
最后这个参数 `alsologtostderr` 是为了调试方便在控制台查看错误输出用的。之后就一切顺利地创建了这么一个 Hyper-V 的虚拟机给 Minikube 使用。
准备下次有空也试试 Mac OS 上这么干,可以参考[这里](https://deis.com/blog/2016/run-kubernetes-on-a-mac-with-kube-solo/)。
评论