使用阿里云镜像搭建Minikube本地Kubernetes环境

为了方便大家开发和体验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的世界吧!:-)