一、问题背景
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,页面正常显示:
