minikube:Ubuntu 部署本地集群踩坑

官方安装教程

minikube start | minikube

再次感叹 homebrew 的伟大,一行命令就安装、后续也没有问题。

仪表盘

使用 minikube dashboard 启动仪表盘。如果在服务器上启动、本地访问,就运行类似于的下面命令:

1
kubectl proxy --address='0.0.0.0' --disable-filter=true

然后把 http://127.0.0.1:46749/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ 这样的 URL 改为 http://ServerIP:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ ,就可以外网直接访问了(注意服务器开端口)。

Helm 安装

直接使用 snap 安装,方便快捷:

1
sudo snap install helm --classic

kubectl 安装

snap 上大分:

1
sudo snap install kubectl --classic

安装可能遇到的问题的解决方案

The “docker” driver should not be used with root privileges

使用命令 minikube start 启动,参数 driver 默认为 docker 。如果以 root 用户运行该命令会出现如标题所示的错误,下面是解决方法:

minikube - Why The “docker” driver should not be used with root privileges - Stack Overflow

然而直接在命令最后加上 –-force 也不是不行。

Unable to find image ……. locally

minikube考虑到了墙的问题,并提供了解决方案。那就是启动的时候添加两个限定国内镜像仓库的参数,这样可以避免后面minikube拉不到镜像的问题.

1
 minikube start --image-mirror-country='cn'  --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'

如果还是解决不了,就指定镜像,先用 docker 拉取镜像:

1
docker pull docker-0.unsee.tech/kicbase/stable:v0.0.46

然后再指定镜像:

1
minikube start --driver=docker --base-image="docker-0.unsee.tech/kicbase/stable:v0.0.46" --force

启动仪表盘可能遇到的问题的解决方案

卡在 “正在验证 proxy 运行状况 …”

先用 minikube dashboard --alsologtostderr -v=1 查看是否存在 503 报错,如果有继续执行下面命令:

1
kubectl get pods --all-namespaces

会看到所有命名空间下的 Pod 的状态,着重看 dashboard-metrics-scraperkubernetes-dashboard 开头的两个 Pod,分别运行 kubectl logs --namespace=kubernetes-dashboard [PodName] 查看 Pod 的日志,并通过 kubectl describe pod [PodName] -n [NameSpace] ,查看事件详情。

如果遇到的是 ImagePullBackOff 镜像拉取错误,步骤如下:

  • 先记录下要拉取的镜像名,类似于 docker.io/kubernetesui/metrics-scraper:v1.0.8docker.io/kubernetesui/dashboard:v2.7
  • 然后 minikube ssh 进入容器,分别拉取 docker.io/kubernetesui/metrics-scraper:v1.0.8kubernetesui/dashboard:v2.7.0 镜像。
  • 如果拉取后的镜像 tag 与查看事件详情中所描述要拉取的镜像名不同,则通过类似 docker tag kubernetesui/dashboard:v2.7.0 docker.io/kubernetesui/dashboard:v2.7 来修改 tag 。
  • 最后重新启动集群 minikube start ,并运行 minikube dashboard

如果遇到的是 CrashLoopBackOff 路由错误,步骤如下:

  • 刷新 iptabels:

    1
    2
    3
    4
    5
    6
    
    systemctl stop kubelet
    systemctl stop docker
    iptables --flush
    iptables -tnat --flush
    systemctl start kubelet
    systemctl start docker
    
  • 重新运行 minikube dashboard