image.png
为了方便大家开发和体验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

您可以参考 [https://kubernetes.io/zh/docs/tasks/tools/](https://kubernetes.io/zh/docs/tasks/tools/) 安装配置!!!

Minikube在不同操作系统上支持不同的驱动

  • macOS
  • Linux
  • Windows
    • VirtualBoxHyper-V - 请参考下文
      • 由于minikube复用了docker-machine,在其软件包中已经支持了相应的VirtualBox, VMware Fusion驱动
      • VT-x/AMD-v 虚拟化必须在 BIOS 中开启
      • Windows环境下,如果开启了Hyper-V,不支持VirtualBox方式

二、安装Minikube

您可以参考 [https://minikube.sigs.k8s.io/docs/start/](https://minikube.sigs.k8s.io/docs/start/) 安装配置!!!

  • ①:如下命令将自动使用阿里云服务来支持minikube的环境配置
    1. minikube start --image-mirror-country=cn
    ```bash [greamrod@localhost ~]$ minikube start —image-mirror-country=cn
  • Centos 7.9.2009 上的 minikube v1.24.0
  • 自动选择 docker 驱动
  • 正在使用镜像存储库 registry.cn-hangzhou.aliyuncs.com/google_containers
  • Starting control plane node minikube in cluster minikube
  • Pulling base image …

    registry.cn-hangzhou.aliyun…: 355.78 MiB / 355.78 MiB 100.00% 5.31 MiB

  • Creating docker container (CPUs=2, Memory=2200MB) …

    kubectl.sha256: 64 B / 64 B [—————————————] 100.00% ? p/s 0s kubelet.sha256: 64 B / 64 B [—————————————] 100.00% ? p/s 0s kubelet: 115.57 MiB / 115.57 MiB [——————-] 100.00% 5.92 MiB p/s 20s

    • Generating certificates and keys …
    • Booting up control plane …
    • Configuring RBAC rules …
  • Verifying Kubernetes components…
    • Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
  • Enabled addons: storage-provisioner, default-storageclass
  • Done! kubectl is now configured to use “minikube” cluster and “default” namespace by default

[greamrod@localhost ~]$ kubectl get po -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-7d89d9b6b8-h5b97 0/1 Running 0 11s kube-system etcd-minikube 1/1 Running 0 24s kube-system kube-apiserver-minikube 1/1 Running 0 24s kube-system kube-controller-manager-minikube 1/1 Running 0 23s kube-system kube-proxy-2pqqx 1/1 Running 0 12s kube-system kube-scheduler-minikube 1/1 Running 0 24s kube-system storage-provisioner 1/1 Running 0 23s

  1. > `minikube` 提供了非常多的配置参数,常用配置参数如下:
  2. > - `--driver=***` `1.5.0`版本开始,`Minikube`缺省使用系统优选的驱动来创建`Kubernetes`本地环境,比如您已经安装过Docker环境,`minikube` 将使用 `docker` 驱动
  3. > - `--cpus=2`: `minikube`虚拟机分配`CPU`核数
  4. > - `--memory=2048mb`: `minikube`虚拟机分配内存数
  5. > - `--registry-mirror=***` : 为了提升拉取`Docker Hub`镜像的稳定性,可以为 `Docker daemon` 配置镜像加速,参考[阿里云镜像服务](https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)
  6. > - `--kubernetes-version=***`: `minikube` 虚拟机将使用的 `kubernetes` 版本
  7. - ②: 创建 `minikube` 环境并且调整默认资源配置
  8. ```bash
  9. minikube start --driver=docker \
  10. --image-mirror-country=cn \
  11. --image-mirror-country='cn'\
  12. --cpus=4 --memory=4096mb \
  13. --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.24.0.iso \
  14. --registry-mirror=https://f69s1xsk.mirror.aliyuncs.com

三、使用Minikube

用户使用Minikube CLI管理虚拟机上的Kubernetes环境,比如:启动,停止,删除,获取状态等。一旦Minikube虚拟机启动,用户就可以使用熟悉的Kubectl CLIKubernetes集群上执行操作。

  • ①:Minikube也提供了丰富的Addon组件:

    1. minikube addons list
    1. [greamrod@localhost ~]$ minikube addons list
    2. |-----------------------------|----------|--------------|-----------------------|
    3. | ADDON NAME | PROFILE | STATUS | MAINTAINER |
    4. |-----------------------------|----------|--------------|-----------------------|
    5. | ambassador | minikube | disabled | unknown (third-party) |
    6. | auto-pause | minikube | disabled | google |
    7. | csi-hostpath-driver | minikube | disabled | kubernetes |
    8. | dashboard | minikube | disabled | kubernetes |
    9. | default-storageclass | minikube | enabled | kubernetes |
    10. | efk | minikube | disabled | unknown (third-party) |
    11. | freshpod | minikube | disabled | google |
    12. | gcp-auth | minikube | disabled | google |
    13. | gvisor | minikube | disabled | google |
    14. | helm-tiller | minikube | disabled | unknown (third-party) |
    15. | ingress | minikube | disabled | unknown (third-party) |
    16. | ingress-dns | minikube | disabled | unknown (third-party) |
    17. | istio | minikube | disabled | unknown (third-party) |
    18. | istio-provisioner | minikube | disabled | unknown (third-party) |
    19. | kubevirt | minikube | disabled | unknown (third-party) |
    20. | logviewer | minikube | disabled | google |
    21. | metallb | minikube | disabled | unknown (third-party) |
    22. | metrics-server | minikube | disabled | kubernetes |
    23. | nvidia-driver-installer | minikube | disabled | google |
    24. | nvidia-gpu-device-plugin | minikube | disabled | unknown (third-party) |
    25. | olm | minikube | disabled | unknown (third-party) |
    26. | pod-security-policy | minikube | disabled | unknown (third-party) |
    27. | portainer | minikube | disabled | portainer.io |
    28. | registry | minikube | disabled | google |
    29. | registry-aliases | minikube | disabled | unknown (third-party) |
    30. | registry-creds | minikube | disabled | unknown (third-party) |
    31. | storage-provisioner | minikube | enabled | kubernetes |
    32. | storage-provisioner-gluster | minikube | disabled | unknown (third-party) |
    33. | volumesnapshots | minikube | disabled | kubernetes |
    34. |-----------------------------|----------|--------------|-----------------------|
  • ②:通过 minikube 命令行,可以轻松开启 Addon 组件,所有组件镜像也会正确解析到阿里云的镜像仓库URL

    1. minikube addons enable ingress
    2. minikube addons enable ingress-dns

    ```bash [greamrod@localhost ~]$ 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’ 插件


[greamrod@localhost ~]$ 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的世界吧!!!