一、问题背景
k8s部署两个服务,一个nginx,一个nacos, 服务信息如下(nacos有两个端口):
服务 | serviceName | service类型 | port | targetPort | nodePort |
---|---|---|---|---|---|
nginx | monitor-cp-nginx | NodePort | 80 | 80 | 31082 |
nacos | monitor-cp-nacos | ClusterIP | 8848 | 8848 | - |
9848 | 9848 | - |
ng的default.conf
配置文件关于nacos部分(将请求转发到nacos):
预期效果:
当请求nginx:服务器IP:31082/nacos
时候,ng将请求代理到nacos服务,此时显示nacos的登录页面。
问题出现在请求nginx:服务器IP:31082/nacos
时,并没有出现nacos的页面。
二、问题排查
2.1 错误日志
进入nginx容器查看日志,日志目录:/var/log/nginx
下的error.log
显示内容:
日志显示连接nacos服务失败。
2.2 验证网络
进入nginx容器,验证下网络是否畅通:
确实是连接不上。
2.3 排查nacos服务
2.3.1 确保pod正常运行
执行 kubectl get pod -n oap-dev | grep nacos
,可以看到pod是running状态:
2.3.2 检查service服务
执行kubectl get svc -n oap-dev | grep nacos
:
可以看到两个端口8848
和9848
,没有问题。
此处的端口显示的是yaml文件中port
字段值。
2.3.3 检查endpoint服务
执行kubectl get ep -n oap-dev | grep nacos
:
查看两个端口,此处的端口值是yaml文件中的targetPort
字段值。
这两个端口值与规划值不符
,应该也是8848和9848。(应该是之前执行了一个错误yaml文件,所以才导致端口与规划不符)
至此发现问题所在,将nacos.yaml文件中targetPort
的值修改过来,重新执行kubectl apply -f nacos.yaml
。
三、验证
访问:服务器IP:31082/nacos
,页面正常显示: