前言

本人初学k8s,以此文章记录自己minikuber安装遇到的问题,同时分享出来给大家作为参考。文中的大部分方法为网上查询得到,在此文以作总结。文章中解决方法可能有些问题和拙劣,欢迎各位的指正。

 一.minikuber start 安装失败

1.镜像文件下载失败

报错:Unable to find image gcr.io/k8s-minikube/kicbase:v0.0.10 ...

因为有个镜像下载不下来,这个镜像不是从阿里云上下载的 gcr.io/k8s-minikube/kicbase:v0.0.10

解决方案:#
查找替代的镜像,比如anjone/kicbase

#下载对应镜像
docker pull anjone/kicbase
#指定镜像运行,这里本人是root用户运行须加--force
minikube start --vm-driver=docker --base-image="anjone/kicbase" --image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --force

 2.kubernetes 1.24以上版本不支持docker

有两种方法解决

1.安装cri_docker

2.指定低于1.24的版本进行安装

由于安装cri_docker稍复杂这里选择指定版本进行安装

在minikube start 中加上 --kubernetes-version=v1.22.3,此外不可版本过低否则minikube不兼容。

这里的1.22.3版本本人测试能够正常安装。

minikube start  --kubernetes-version=v1.22.3

二.CoreDNS循环检测

kubectl get po -A查看集群报8080被拒绝,集群没有成功启动。

kubectl get po -A查看集群CoreDNS pod状态为CrashLoopBackOff

 解决方法

kubectl -n kube-system edit configmap coredns

注释掉带有loop的行,保存退出

删除CoreDNS pod,重新生成

kubectl -n kube-system delete pod -l k8s-app=kube-dns

三.minikube dashboard 仪表盘无法启动

kubectl get po -A查看集群

发现两个dashboard相关的pod镜像拉取失败

 查看对应pod的日志

kubectl describe pod pod名 -n pod所属的命名空间

例子

kubectl describe pod dashboard-metrics-scraper-687748788c-vph45 -n kubernetes-dashboard

查看日志,找出没有拉取到的镜像

没有拉取到的镜像为

kubernetesui/dashboard:v2.7.0

kubernetesui/metrics-scraper:v1.0.8

手动拉取镜像(如果手动拉取镜像失败,文章后面有解决方法)

docker pull kubernetesui/dashboard:v2.7.0

将镜像导入minikuber

minikube image load kubernetesui/metrics-scraper:v1.0.4

重新生成pod

kubectl delete pod pod名 -n pod所属的命名空间

解决docker拉取不到镜像

bash -c "$(curl -sSLf https://xy.ggbond.org/xy/docker_pull.sh)" -s 须要拉取的镜像名 保存记录镜像源文件的地址

例子

bash -c "$(curl -sSLf https://xy.ggbond.org/xy/docker_pull.sh)" -s kubernetesui/metrics-scraper:v1.0.8 /dockerImageSouce

成功拉取后会在对应地址下生成名为docker_mirrors.txt文件保存记录镜像源

使用此方法拉取镜像大概率会导致minikube的集群全部失效,原因是因为使用的脚本不断尝试新的镜像源,反复重启docker。具体如何避免重启docker导致集群失效的方法,本人学艺不精无法解决。希望哪位大神能给予指导。

四.minikube dashboard 仪表盘url无法访问

如果是本机启动minikube dashboard一般情况不会出现此问题

虚拟机搭建出现此问题须要配置代理

kubectl proxy --address='0.0.0.0' --accept-hosts='访问仪表盘的IP' --port=指定一个端口号

或直接开启

kubectl proxy --address='0.0.0.0' --disable-filter=true --port=8001

之后将生成的url前面的ip和端口号替换为虚拟机ip和指定的端口号

如果服务器和访问的地址不在一个网络,则须要内外穿透

这里本人使用的是ngrok

在官网下载好对应的tar包,解压安装

ngrok | API Gateway, IoT Device Gateway, Secure Tunnels for Containers, Apps & APIs

注册账户,生成authtoken

ngrok authtoken 加上自己的authtoken

ngrok https 指定的端口

ngrok会生成一个可以访问的url

用此url替换掉minikube dashboard生成的url前面的IP和端口即可成功访问

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐