在Windows10通过minikube部署k8s集群


开启Hyper-V

笔者的win10版本为家庭中文版,默认没有hyper-v功能。图中红框中的内容并不是Hyper-V。
windows功能

也可以在PowerShell中通过命令查询本机的Hyper-V,通过管理员身份运行PowerShell,输入命令:

Get-WindowsOptionalFeature -Online -FeatureName *hyper-v* | select DisplayName, FeatureName

如果本机安装有hyper-v,会显示如下内容:
在这里插入图片描述
家庭中文版是默认没有的,需要特别安装。随便某个目录下,创建一个文件,修改名称和类型为Hyper-V.cmd。其内容为:

pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

以管理员身份运行该脚本,将会安装Hyper-V工具,完成安装后,输入Y,电脑自动重启配置更新。重启后查看windows功能,至此完成hyper-v的安装工作。
在这里插入图片描述

安装minikube和kubectl

笔者直接从官网下载的exe文件,

minikube:https://storage.googleapis.com/minikube/releases/latest/minikube-installer.exe

kubectl:https://dl.k8s.io/release/v1.23.0/bin/windows/amd64/kubectl.exe

上面链接下载的kubectl是可执行文件,可以将其所在目录写入PATH中。查看客户端工具的版本:
在这里插入图片描述
minikube安装好后有powershell脚本文件可以快速将minikube加入环境变量:
在这里插入图片描述

启动K8S集群

管理员身份运行powershell,使用minikube start --nodes 2 -p multinode-demo部署一主一从的K8S集群。启动过程中对本机部分资源实现了虚拟化。启动后查看集群信息kubectl cluster-info
在这里插入图片描述
minikube是通过profile来管理不同的集群,比如上面创建的集群,其profile为multinode-demo,通过minikube profile list查看当前所有的profile。
在这里插入图片描述
注意到容器运行时是docker,如果windows安装了docker,可以使用docker命令行工具查看容器。

关于profile的问题

minikube文档中表示,如果没有安装kubectl,minikube有内置的kubectl,可以像这样使用:

minikube kubectl -- <kubectl commands>

比如minikube kubectl -- get pods

实际试了一下,会有点问题:
在这里插入图片描述
文档中给出一种windows下设置别名的方法:

function kubectl { minikube kubectl -- $args }

这个设置会对当前会话生效,并且优先级高会屏蔽本身的kubectl命令行。但是上述别名不能通过Get-Alias查到,查了下大致是自定义函数的用途。这个并不能解决minikube kubectl -- get pods报错的问题,翻阅了minikube的帮助文档,其实还是profile的问题,由于minikube当前认定的profile不是multinode-demo,上述命令会默认认为当前的profile是minikube,即使并不存在一个名为minikube的profile。
在这里插入图片描述
所以,在minikube后加上指定的profile即可:
在这里插入图片描述
在这里插入图片描述

使用minikube profile multinode-demo可以将当前profile设置为multinode-demo。这样查询multinode-demo集群信息时可以不用指定–profile。在这里插入图片描述

停止和销毁K8S集群

需要明确的是,minikube创建的K8S集群,容器运行时是docker,节点是虚拟机通过hyper-v方式实现虚拟化,当minikube start时会进行虚拟化,而minikube stop时则会停止虚拟机但不会释放资源。
在这里插入图片描述
暂停该集群后,电脑的内存占用降低。再次重启后,内存占用又升高。而C盘的可用空间没有变化。
在这里插入图片描述
minikube stop和minikube delete的效果是不同的,如果delete,会释放虚拟机资源。delete后C盘的可用空间增大。
在这里插入图片描述

参考资料

How to Install Hyper-V PowerShell Module

minikube start | minikube

Install and Set Up kubectl on Windows | Kubernetes

win10 家庭中文版没有Hyper-V,这样安装一步搞定_GarenWang的博客-CSDN博客_hyper-v

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐