在 WIndows 10 企业版中手动安装 Minikube

为了方便大家开发和体验 Kubernetes,社区提供了可以在本地部署的 Minikube。但是由于网络访问原因,很多朋友无法安装,更无法使用。笔者尝试了几种安装方式,有通过 Docker Desktop 安装的,有通过编译 github.com/AliyunContainerService/minikube 项目来安装的,感觉都不太理想。

经过一整天的摸索,终于找到了一条可行的道路。最新的Minikube中,提供了配置项,可以设置 Docker 镜像地址和 Google 容器地址。

Windows 10 下可以使用 VirtualBox 和 Hyper-V 两种驱动来安装 Minikube。本文使用 Hyper-V 驱动。

1、安装前的准备

1)检查 Windows 版本

系统的要求是 Window 10 专业版或企业版,家庭版本身没有 Hyper-V,不能支持虚拟化。但有网友说家庭版也可以开启 Hyper-V,但笔者没有验证过。

2)创建外部虚拟交换机

在 Windows 搜索中搜索并打开“Hyper-V 管理器”。

如果搜不到“Hyper-V 管理器”,说明它没有被安装。可以在控制面板的程序里启用“Hyper-V 管理工具”功能,不需要启用“Hyper-V 平台”:

在“Hyper-V 管理器”窗口右侧点击“虚拟交换机管理器…”。

新建虚拟网络交换机,起名为“MinikubeSwitch”,并选择正在使用的外部网络。或者使用默认的交换机“Default Switch”也是可以的。

3)执行命令

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

2、安装 Mnikube

1)下载 Minikube 安装程序

可以从 Github 下载最新版本:

https://github.com/kubernetes/minikube/releases

目前的最新版本是 1.7.3,下载其中的 minikube-installer.exe 文件。

注:可以从文章底部提供的百度网盘链接来下载。

2)安装 Minikube

运行 minikube-installer.exe 可执行文件进行安装。

3、启动 Minikube

请读者看完本节再尝试,以免出现不必要的错误。

1)启动命令

使用一下命令查看帮助:

minikube --help

但由于国内的网络问题,需要额外添加一下配置项,命令参考如下(使用管理员权限执行):

minikube start --image-mirror-country="cn" --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.7.3.iso --registry-mirror=https://dockerhub.azk8s.cn --vm-driver="hyperv" --hyperv-virtual-switch="MinikubeSwitch" --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --memory=4096

注:下次直接执行 minikube start 命令即可。

第一次会下载 VM boot image,文件名为“minikube-v1.7.3.iso”。

如果启动成功,将输出如下信息:

* Microsoft Windows 10 Pro 10.0.18363 Build 18363 上的 minikube v1.7.3
* Using the hyperv driver based on user configuration
* 正在使用镜像存储库 registry.cn-hangzhou.aliyuncs.com/google_containers
* 正在创建 hyperv 虚拟机(CPUs=2,Memory=4096MB, Disk=20000MB)...
* 正在 Docker 19.03.6 中准备 Kubernetes v1.17.3…
* 正在启动 Kubernetes ...
* Enabling addons: dashboard, default-storageclass, storage-provisioner
* 完成!kubectl 已经配置至 "minikube"

虽然命令中已经指定了各种国内镜像地址,但还是有 Kubernetes 组件需要从 googleapis.com 网站下载。如果没有国外代理的,还是无法启动成功。如果启动程序无法自动下载组件,则需要先手动下载这些组件。

下一小节将介绍手动下载并安装组件的方法。

2)手动下载 Kubernetes 组件

根据启动程序的提示,如果无法下载 kubelet 等组件,则需要下载 kubelet、kubeadm 和 kubectl 等 3 个组件。它们的源地址如下:

注:可以从文章底部提供的百度网盘链接来下载。

将这 3 个组件的下载文件拷贝到 Minikube 的缓存目录,启动的时候就不会再去下载。

缓存目录的地址在 Windows 系统的用户目录。以笔者额电脑为例,Windows 系统用户名为 tanggaowei,组件的缓存目录为:

C:\Users\tanggaowei\.minikube\cache\linux\v1.17.3\

注意:根据版本号修改为相应的地址。

目录如下图:

3)禁用动态内存

使用管理员权限打开 PowerShell 命令行工具,然后运行以下 Windows 命令,用来禁用动态内存:

Set-VMMemory -VMName 'minikube' -DynamicMemoryEnabled $false

4、安装 kubectl 工具

kubectl 是 Kuberntetes 命令行工具,在启动 Kubernetes 控制台的时候会用到。

1)下载

Windows 下的 kubectl 工具是一个 kubectl.exe 的可执行文件,下载地址如下:

https://storage.googleapis.com/kubernetes-release/release/v1.17.3/bin/windows/amd64/kubectl.exe

注:可以从文章底部提供的百度网盘链接来下载。

2)安装

将 kubectl.exe 拷贝到 D:\bin 目录中,然后将 D:\bin 目录添加到 Path 环境变量中。

5、启动 Kubernetes 控制台

使用一下命令启动 Kubernetes 控制台:

minikube dashboard

命令会使用默认浏览器自动打开 Kubernetes 控制台。

6、测试

使用名为 echoserver 的镜像创建一个 Kubernetes Deployment,并使用 –port 在端口 8080 上暴露服务,用来测试 Minikube 是否能正常使用。echoserver 是一个简单的 HTTP 服务器。

1)运行 hello-minikube 镜像

kubectl run hello-minikube --image=registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.4 --port=8080

2)公开 Service

要访问 hello-minikube Deployment,需要将其作为 Service 公开:

kubectl expose deployment hello-minikube --type=NodePort

3)查看 POD 是否启动

kubectl get pod

4)查看 POD 启动详情

kubectl describe pods

5)获取暴露 Service 的 URL

获取暴露 Service 的 URL 以查看 Service 的详细信息:

minikube service hello-minikube --url
http://192.168.189.26:31974

这时候,就可以在浏览器里输入 http://192.168.189.26:31974 地址来访问 hello-minikube 服务,页面会显示该 POD 的文本信息。

6)删除 POD

kubectl delete deployment hello-minikube

7)删除服务

kubectl delete service hello-minikube

8)查看 Minikube 服务状态

命令:

minikube status

输出:

host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

9)停止 Minikube 服务

minikube stop

7、重用 Docker 守护进程

Minikube 启动时会同时启动 Docker 守护进程,可以通过以下方法将 Docker CLI 连接到 Minikube 自带的 Docker 守护进行。

由于命令里带有 eval 命令,推荐使用 Gti Bash 来执行。请先安装 Git 工具。

Docker CLI 是 Docker 的命令行工具,在 Windwos 下是一个名为 docker.exe 的可执行文件,可从本文底部提供的百度网盘链接中下载,也可以安装 Docker Desktop。Docker Desktop 太耗资源,笔者从安装好的 Docker Destop 中拷贝出 docker.exe 文件后将其卸载。

本文的 Docker CLI 版本是 19.03.5。

最好将 docker.exe 文件的路径添加到 Path 环境变量中,以方便运行。

1)设置 Docker CLI 环境变量

使用管理员权限打开 Git Bash(可搜索出应用或用右键启动):

在 PowerShell 里执行以下命令:

minikube docker-env
$Env:DOCKER_TLS_VERIFY = "1"
$Env:DOCKER_HOST = "tcp://172.17.198.190:2376"
$Env:DOCKER_CERT_PATH = "C:\Users\tanggaowei\.minikube\certs"
$Env:MINIKUBE_ACTIVE_DOCKERD = "minikube"
# To point your shell to minikube's docker-daemon, run:
# & minikube -p minikube docker-env | Invoke-Expression

2)连接 Docker 守护进程

使用管理员权限打开 PowerShell,并执行以下命令:

& minikube -p minikube docker-env | Invoke-Expression

然后使用 docker ps 命令查看到 Kubernetes 启动的 Docker 容器。

8、常见错误

1)错误:似乎并未安装 hyperv

如果运行 minikube start .. 的时候提示这个错误,除了可能是 Windows 的 Hyper-V 功能没有,还可能是 BIOS 的设置有问题。笔者就是由于换了一根内存条导致的。BIOS 提示发现了硬件变更,我跳过了硬件检测的步骤。应该让 BIOS 重新检测一遍硬件。如果还不行就充值一下 BIOS。

2)错误:failed: write: unexpected EOF

可能是网络原因,数据下载超时。换宽带,或者用手机共享 WIFI 试试,或者从移动网切换成电信网。

附录

1)百度网盘链接

链接:https://pan.baidu.com/s/1fvaWVZXvlqLiGMkkI7Os5w

提取码:p3n2

2)minikube 命令参数说明

  • image-mirror-country:可以指定从中国大陆下载镜像。

  • iso-url:单机 Kubernetes 的镜像文件。

  • registry-mirror:通用的 Docker 镜像地址。

  • vm-driver:虚拟机驱动类型,比如 Hyper-V,VirtualBox 等。

  • hyperv-virtual-switch:虚拟网络交换机。

  • image-repository:Google 容器镜像地址,主要是 Kubernetes 相关的容器。

  • memory:为 Kubernetes 分配的内存,单位:兆。

2)官方 MiniKube 文档

3)其他参考链接


前一篇:
后一篇:

发表评论