为了方便大家开发和体验Kubernetes,社区提供了可以在本地部署的开发环境 Minikube。由于网络访问原因,很多朋友无法直接使用minikube进行实验。在v1.24.0的官方 Minikube 中,已经合并了由阿里云团队支持的方案,可以帮助大家利用阿里云的服务来获取所需Docker镜像,二进制文件和配置,也可以完美支持 Minikube 丰富的 addon 组件!
注:
- 本文已更新到 Minikube v1.24.0/Kubernetes v1.22+
-
如需更新minikube,需要更新 minikube 安装包
-
minikube delete
删除现有虚机,删除~/.minikube
目录缓存的文件 - 重新创建 minikube 环境
-
- Docker Desktop 也为Mac/Windows用户提供了Kubernetes开发环境的支持 https://yq.aliyun.com/articles/672675 ,大家也可以试用
配置
先决条件
安装 kubectl
Minikube在不同操作系统上支持不同的驱动
-
macOS
- Docker 缺省驱动
- xhyve driver , VirtualBox 或 VMware Fusion
-
Linux
- VirtualBox 或 KVM2
- Docker 缺省驱动
-
Windows
- VirtualBox 或 Hyper-V - 请参考下文
注:
- 由于minikube复用了docker-machine,在其软件包中已经支持了相应的VirtualBox, VMware Fusion驱动
- VT-x/AMD-v 虚拟化必须在 BIOS 中开启
- 在Windows环境下,如果开启了Hyper-V,不支持VirtualBox方式
安装Minikube
您可以参考 https://minikube.sigs.k8s.io/docs/start/ 安装配置
注:有问题和需求请到 Github 提 issue,并 @denverdino
启动
如下命令将自动使用阿里云服务来支持minikube的环境配置
minikube start --image-mirror-country='cn'
minikube 提供了非常多的配置参数,
常用配置参数如下
-
--driver=***
从1.5.0版本开始,Minikube缺省使用系统优选的驱动来创建Kubernetes本地环境,比如您已经安装过Docker环境,minikube 将使用docker
驱动 -
--cpus=2
: 为minikube虚拟机分配CPU核数 -
--memory=2048mb
: 为minikube虚拟机分配内存数 -
--registry-mirror=***
为了提升拉取Docker Hub镜像的稳定性,可以为 Docker daemon 配置镜像加速,参考阿里云镜像服务 -
--kubernetes-version=***
: minikube 虚拟机将使用的 kubernetes 版本
比如, 创建 minikube 环境并且调整默认资源配置
minikube start --image-mirror-country='cn' --cpus=4 --memory=4096mb
更多配置参数请参考 minikube help start
打开Kubernetes控制台
minikube dashboard
对于使用Hyper-V环境的用户,首先应该打开Hyper-V管理器创建一个外部虚拟交换机,
之后,我们可以用如下命令来创建基于Hyper-V的Kubernetes测试环境
.\minikube.exe start --image-mirror-country cn \
--registry-mirror=https://xxxxxx.mirror.aliyuncs.com \
--vm-driver="hyperv" \
--hyperv-virtual-switch="MinikubeSwitch" \
--memory=4096
注:需要管理员权限来创建Hyper-V虚拟机
使用Minikube
用户使用Minikube CLI管理虚拟机上的Kubernetes环境,比如:启动,停止,删除,获取状态等。一旦Minikube虚拟机启动,用户就可以使用熟悉的Kubectl CLI在Kubernetes集群上执行操作。
Minikube 也提供了丰富的 Addon 组件
$ minikube addons list
|-----------------------------|----------|--------------|-----------------------|
| ADDON NAME | PROFILE | STATUS | MAINTAINER |
|-----------------------------|----------|--------------|-----------------------|
| ambassador | minikube | disabled | unknown (third-party) |
| auto-pause | minikube | disabled | google |
| csi-hostpath-driver | minikube | disabled | kubernetes |
| dashboard | minikube | disabled | kubernetes |
| default-storageclass | minikube | enabled ✅ | kubernetes |
| efk | minikube | disabled | unknown (third-party) |
| freshpod | minikube | disabled | google |
| gcp-auth | minikube | disabled | google |
| gvisor | minikube | disabled | google |
| helm-tiller | minikube | disabled | unknown (third-party) |
| ingress | minikube | disabled | unknown (third-party) |
| ingress-dns | minikube | disabled | unknown (third-party) |
| istio | minikube | disabled | unknown (third-party) |
| istio-provisioner | minikube | disabled | unknown (third-party) |
| kubevirt | minikube | disabled | unknown (third-party) |
| logviewer | minikube | disabled | google |
| metallb | minikube | disabled | unknown (third-party) |
| metrics-server | minikube | disabled | kubernetes |
| nvidia-driver-installer | minikube | disabled | google |
| nvidia-gpu-device-plugin | minikube | disabled | unknown (third-party) |
| olm | minikube | disabled | unknown (third-party) |
| pod-security-policy | minikube | disabled | unknown (third-party) |
| portainer | minikube | disabled | portainer.io |
| registry | minikube | disabled | google |
| registry-aliases | minikube | disabled | unknown (third-party) |
| registry-creds | minikube | disabled | unknown (third-party) |
| storage-provisioner | minikube | enabled ✅ | kubernetes |
| storage-provisioner-gluster | minikube | disabled | unknown (third-party) |
| volumesnapshots | minikube | disabled | kubernetes |
|-----------------------------|----------|--------------|-----------------------|
通过 minikube 命令行,可以轻松开启 Addon 组件,所有组件镜像也会正确解析到阿里云的镜像仓库URL
$ minikube addons enable ingress
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.0.4
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1
???? Verifying ingress addon...
???? 启动 'ingress' 插件
$ minikube addons enable ingress-dns
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/minikube-ingress-dns:0.0.2
???? 启动 'ingress-dns' 插件
大家可以参考 https://minikube.sigs.k8s.io/docs/handbook/addons/ingress-dns/ 来学习使用 Ingress。
更多关于 Minikube 的使用信息可以参考 https://minikube.sigs.k8s.io/
好了,开始探索Kubernetes的世界吧!:-)