首先Docker官网下载安装Docker:https://www.docker.com/

安装Minikube

下载地址:https://minikube.sigs.k8s.io/docs/start/

也可以直接执行brew命令来进行安装:

brew install minikube

启动(需要良好网络环境,最好是科学上网,不然等待时间会很久而且不一定能成功):

minikube start

执行结果:

xxx@xx % minikube start
😄  Darwin 13.4 (arm64) 上的 minikube v1.31.2
✨  自动选择 docker 驱动
📌  使用具有 root 权限的 Docker Desktop 驱动程序
👍  正在集群 minikube 中启动控制平面节点 minikube
🚜  正在拉取基础镜像 ...
💾  正在下载 Kubernetes v1.27.4 的预加载文件...
    > preloaded-images-k8s-v18-v1...:  327.74 MiB / 327.74 MiB  100.00% 23.05 M
    > index.docker.io/kicbase/sta...:  404.50 MiB / 404.50 MiB  100.00% 6.60 Mi
❗  minikube was unable to download gcr.io/k8s-minikube/kicbase:v0.0.40, but successfully downloaded docker.io/kicbase/stable:v0.0.40 as a fallback image
🔥  正在创建 docker container(CPUs=2,内存=4000MB)...
🐳  正在 Docker 24.0.4 中准备 Kubernetes v1.27.4…
    ▪ 正在生成证书和密钥...
    ▪ 正在启动控制平面...
    ▪ 配置 RBAC 规则 ...
🔗  配置 bridge CNI (Container Networking Interface) ...
🔎  正在验证 Kubernetes 组件...
    ▪ 正在使用镜像 gcr.io/k8s-minikube/storage-provisioner:v5
🌟  启用插件: storage-provisioner, default-storageclass
🏄  完成!kubectl 现在已配置,默认使用"minikube"集群和"default"命名空间

minikube常用配置参数如下:

  • –driver=*** 从1.5.0版本开始,Minikube缺省使用系统优选的驱动来创建Kubernetes本地环境,比如已经安装过Docker环境,minikube将使用docker驱动。
  • –cpus=2: 为minikube虚拟机分配CPU核数。
  • –memory=2048mb: 为minikube虚拟机分配内存数,如果有足够的资源,可以考虑分配多一点cpu和内存。
  • –registry-mirror=*** 为了提升拉取Docker Hub镜像的稳定性,可以为 Docker daemon配置镜像加速,参考阿里云镜像服务
  • –kubernetes-version=***: minikube 虚拟机将使用的 kubernetes版本。

如下命令将自动使用阿里云服务来支持minikube的环境配置:

minikube start --image-mirror-country='cn'

下载kubectl

通过minikube下载kubectl:

minikube kubectl -- get po -A

该命令为在minikube虚拟机中使用kubectl工具获取所有命名空间下的pod(容器组)的信息。

参数及命令解释:

  • minikube:用于在本地计算机上运行Kubernetes集群。
  • kubectl:Kubernetes的命令行工具。
  • –:表示后面的参数是kubectl的参数,而非minikube的参数。
  • get:获取资源的命令。
  • po:指的是pod资源。
  • -A:表示获取所有命名空间下的资源信息,不加该参数则只获取默认命名空间下的资源信息。

执行结果:

% minikube kubectl -- get po -A
    > kubectl.sha256:  64 B / 64 B [-------------------------] 100.00% ? p/s 0s
    > kubectl:  52.10 MiB / 52.10 MiB [--------------] 100.00% 1.61 MiB p/s 33s
NAMESPACE     NAME                               READY   STATUS    RESTARTS       AGE
kube-system   coredns-5d78c9869d-nqmrs           1/1     Running   0              3m18s
kube-system   etcd-minikube                      1/1     Running   0              3m30s
kube-system   kube-apiserver-minikube            1/1     Running   0              3m30s
kube-system   kube-controller-manager-minikube   1/1     Running   0              3m30s
kube-system   kube-proxy-xmc2g                   1/1     Running   0              3m18s
kube-system   kube-scheduler-minikube            1/1     Running   0              3m33s
kube-system   storage-provisioner                1/1     Running   1 (3m8s ago)   3m28s

此时就可以使用kubectl命令来进行各种kubernetes的操作了。

验证minikube是否正在运行

docker ps

开启控制台

minikube dashboard

执行结果:

% minikube dashboard
🔌  正在开启 dashboard ...
    ▪ 正在使用镜像 docker.io/kubernetesui/dashboard:v2.7.0
    ▪ 正在使用镜像 docker.io/kubernetesui/metrics-scraper:v1.0.8
💡  某些 dashboard 功能需要启用 metrics-server 插件。为了启用所有功能,请运行以下命令:

	minikube addons enable metrics-server


🤔  正在验证 dashboard 运行情况 ...
🚀  正在启动代理...
🤔  正在验证 proxy 运行状况 ...

🎉  正在使用默认浏览器打开 http://127.0.0.1:59719/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ ...

执行,启动metrics-server插件:

minikube addons enable metrics-server

启动完毕之后,点击在下方出现的url,即可进入控制台。

查看集群详情

新开窗口,查看集群详情:

kubectl cluster-info

执行结果:

% kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:59250
CoreDNS is running at https://127.0.0.1:59250/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

部署应用程序

创建一个示例应用:

% kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
deployment.apps/hello-minikube created

查看应用列表:

% kubectl get deployments
NAME             READY   UP-TO-DATE   AVAILABLE   AGE
hello-minikube   0/1     1            0           29m

可以添加-A参数查看所有命名空间下的deployment列表,会列出所有的deployment及其相关信息,包括名称、所属命名空间、副本数量、可用数量、创建时间等:

% kubectl get deployments -A
NAMESPACE              NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
default                hello-minikube              0/1     1            0           30m
kube-system            coredns                     1/1     1            1           144m
kube-system            metrics-server              0/1     1            0           136m
kubernetes-dashboard   dashboard-metrics-scraper   1/1     1            1           138m
kubernetes-dashboard   kubernetes-dashboard        1/1     1            1           138m

删除应用实例:

% kubectl delete deployment hello-minikube
deployment.apps "hello-minikube" deleted

部署并在端口8080上公开它:

kubectl expose deployment hello-minikube --type=NodePort --port=8080

查看部署服务:

% kubectl get services hello-minikube
NAME             TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
hello-minikube   NodePort   10.96.222.0   <none>        8080:30878/TCP   3m25s

通过minikube启动一个浏览器访问此服务:

% minikube service hello-minikube
|-----------|----------------|-------------|---------------------------|
| NAMESPACE |      NAME      | TARGET PORT |            URL            |
|-----------|----------------|-------------|---------------------------|
| default   | hello-minikube |        8080 | http://192.168.49.2:30878 |
|-----------|----------------|-------------|---------------------------|
🏃  Starting tunnel for service hello-minikube.
|-----------|----------------|-------------|------------------------|
| NAMESPACE |      NAME      | TARGET PORT |          URL           |
|-----------|----------------|-------------|------------------------|
| default   | hello-minikube |             | http://127.0.0.1:49201 |
|-----------|----------------|-------------|------------------------|
🎉  正通过默认浏览器打开服务 default/hello-minikube...
❗  因为你正在使用 darwin 上的 Docker 驱动程序,所以需要打开终端才能运行它。

或者使用kubectl转发端口:

kubectl port-forward service/hello-minikube 7080:8080

应用程序现在可在 http://localhost:7080/上使用。

管理集群

暂停Kubernetes而不影响已部署的应用程序:

minikube pause

取消暂停:

minikube unpause

停止集群:

minikube stop

更改默认的内存限制(需要重启):

minikube config set memory 9001

浏览安装的Kubernetes服务目录:

minikube addons list

创建一个旧版版本的Kubernetes集群:

minikube start -p aged --kubernetes-version=v1.16.1

删除所有minikube集群:

minikube delete --all


k8s本地Minikube安装及使用插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2023/08/30/k8s-minikube-install/