1,启动Minikube[1]

minikube start --vm-driver=docker --image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --logtostderr

命令参考的文章[1],不知道为什么,我这里一次命令就成功了。如果有问题,可以参考下原文章或者其他文章。
在这里插入图片描述

2,创建Nginx集群[2]

创建deployment

kubectl create deployment nginx --image=nginx:1.14-alpine

查看deployment

kubectl get deploy

在这里插入图片描述
创建service服务

kubectl expose deploy nginx --port=80 --target-port=80 --type=NodePort

查看service服务

kubectl get svc

在这里插入图片描述
查看pod

kubectl get pod -o wide

在这里插入图片描述

查看大盘监控或者nginx进程

minikube dashboard

在这里插入图片描述

ps -ef | grep nginx
在这里插入图片描述
此时已经可以看到nginx暴露出的service、node和进程等,正在运行中。

可以通过访问kubectl get svc命令暴露出的ip+端口进行访问,如直接通过网页访问,或者curl命令测试

curl 10.105.135.172:80

但是我这里无论如何都访问不了,猜测是防火墙的问题,但是参考了一些文章并进行设置,无法访问的问题还是没有解决[3-5]。

之前用docker启动nginx容器是可以正常运行的,当时防火墙已经关掉了,现在也是关掉的状态,如图。
查看防火墙状态

firewall-cmd --state

在这里插入图片描述

于是怀疑是不是端口被占用了。
lsof -i 用以显示符合条件的进程情况[6]

lsof -i:80

netstat -tunlp 用于显示tcp,ucp的端口和进程等相关情况[6]

netstat -tunlp |grep 80

在这里插入图片描述
可以看到80端口没有被使用。

后来搜到了一篇文章,全网最详细的 K8s Service 不能访问排查流程[7]。按照文章中的排查流程,一步步的排查,在问题7:Pod 正常工作吗中,可以看到我的Pod

curl 10.105.135.172

在这里插入图片描述
查看pod日志

kubectl logs nginx-7cbb8cd5d8-x64mv

查看pod最近一小时内日志

kubectl logs --since=1h nginx-7cbb8cd5d8-x64mv

在这里插入图片描述
可以看到都没有输出。没有打印日志的原因是没有访问到,因此没有工作日志,同样没有报错日志。

从文章 K8s - Kubernetes使用详解6(Service的创建和使用)[8]中注意到,可能是dns service出了问题,从而无法解析server的服务。

验证dns server是否正常工作:
获取nginx这个service的信息,可以看到nginx这个service是存在的

kubectl describe service nginx

在这里插入图片描述
通过 wget 服务名称.命名空间:端口 的方式,进行通信[9]。这种方式需要dns service对服务名称进行解析,才能访问对应服务的ip。可以看到无法访问,说明dns service有问题。

wget nginx.defalt:80

在这里插入图片描述
通过nslookup的非交互模式,测试nginx这个服务域名是否可用[10]。结果是不可用

nslookup nginx.default

在这里插入图片描述

我个人觉得下面这张截图比较说明问题
在这里插入图片描述
直接访问pod的ip和pod暴露出的端口,失败,报错No route to host
exec进入pod内部,可以正常访问,获得响应,下面再去根据上面的报错来查吧

参考资料
【1】,3)minikube玩转k8s集群之创建k8s集群
【2】,Nginx启动成功但页面访问不到的解决方法
【3】,nginx启动后,服务器还是无法访问,问题排除:设置防护墙开放断开
【4】,linux刚安装的httpd报curl: (7) Failed connect to 127.0.0.1:80; Connection refused
【5】,curl error (7)拒绝连接
【6】,linux 如何查看端口被哪个进程占用?
【7】,全网最详细的 K8s Service 不能访问排查流程
【8】,K8s - Kubernetes使用详解6(Service的创建和使用)
【9】,如何验证coreDNS是否正常工作?
【10】,k8s DNS服务配置

Logo

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

更多推荐