Minikube - Kubernetes本地实验环境

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在不同操作系统上支持不同的驱动

注:

  • 由于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

Minikube - Kubernetes本地实验环境

对于使用Hyper-V环境的用户,首先应该打开Hyper-V管理器创建一个外部虚拟交换机,

Minikube - Kubernetes本地实验环境

Minikube - Kubernetes本地实验环境

之后,我们可以用如下命令来创建基于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的世界吧!:-)

上一篇:《JavaScript开发框架权威指南》——第1章 Bower 1.1准备工作


下一篇:如何提高linux命令行的工作效率