使用minikube可以快速地在本机搭建kubernetes实验集群,用于学习和模拟kubernetes集群 *** 作,但是在跟着官网下载好kubernetes和minikube后,在执行minikube service hello-minikube
时启动了浏览器,但是却无法看到内容,说明hello-minikube部署出现问题,不合符预期:
1.奇怪的IP地址
在启动浏览器页面后,发现使用到的是http://192.168.49.2:30020/
访问的,这里的192.168.49.2地址不是默认的localhost,这个ip应该是NodeIP,属于在minikube集群中才能访问的IP,所以理论上来说想在浏览器访问的话,应该是走localhost:8080
,但是一样无法访问,开始排查部署是否成功。
2.查看部署状态
首先查看Pod状态:kubectl get pod -o wide
,发现hello-minikube的Pod并没有Ready:
再查看Deployment状态:kubectl get deployment -o wide
,发现hello-minikube的Deployment也没有Ready:
这说明我们按照官网的流程无法正确将hello-minikube部署起来,继续深入日志排查问题。
3.查看部署日志
从前面的信息中我们已经知道Pod名称为hello-minikube-7bc9d7884c-ls8wx,所以可以获取到Pod的构建日志:kubectl describe pod hello-minikube-7bc9d7884c-ls8wx
,发现在拉取k8s.gcr.io/echoserver:1.4这个镜像过程中发生错误,所以Pod无法构建成功。
问题找到了:官网中的k8s.gcr.io/echoserver:1.4镜像被墙,在国内无法拉取到镜像,导致Pod构建失败。
所以解决这个问题的方法有两个:
1.第一个办法就是找kubernetes及docker的国内代理并配置:在启动minikube时携带proxy参数,指定国内镜像源
minikube start --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
,尝试过后发现拉取该镜像仍然失败。
2.第二个办法就是寻找其他可用的替代镜像:
- 尝试从docker hub中查找echoserver这个镜像:
docker search echoserver
发现了cilium/echoserver这个镜像是从k8s.gcr.io/echoserver中copy的上传的,所以尝试使用cilium/echoserver这个镜像构建hell-minikube:
- 首先删除掉之前的部署流程:
kubectl delete deployment hello-minikube
- 删掉之前的Service:
kubectl delete service hello-minikube
- 然后重新部署:
kubectl create deployment hello-minikube --image=cilium/echoserver
,获取Pod状态及Deployment状态发现已经Ready且Running,说明部署成功了:
- 在Node节点暴露hello-minikube服务的端口8080:
kubectl expose deployment hello-minikube --type=NodePort --port=8080
,并将本机7080端口映射到Node 8080端口:kubectl port-forward service/hello-minikube 7080:8080
- 浏览器中输入
localhost:7080
即可访问到hello-minikube服务
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)