Kubernetes 从同一集群中的另一个pod连接到redis pod
在我的集群中,我有一个nodejs应用程序pod和一个redis pod,我正试图从nodejs连接到redis,但我得到以下错误:Kubernetes 从同一集群中的另一个pod连接到redis pod,kubernetes,redis,Kubernetes,Redis,在我的集群中,我有一个nodejs应用程序pod和一个redis pod,我正试图从nodejs连接到redis,但我得到以下错误: [ioredis]未处理的错误事件:错误:getaddrinfo ENOTFOUND redis位于GetAddrInfoReqWrap.onlookup[as oncomplete](dns.js:60:26) 值得注意的是,在我的nodejs应用程序中,我指向redis:6379,如果我将指针更改为localhost:6379,我将得到一个econnrefer
[ioredis]未处理的错误事件:错误:getaddrinfo ENOTFOUND redis位于GetAddrInfoReqWrap.onlookup[as oncomplete](dns.js:60:26)
值得注意的是,在我的nodejs应用程序中,我指向redis:6379,如果我将指针更改为localhost:6379,我将得到一个econnreference
错误
我的redis部署yaml如下所示:
apiVersion:v1
种类:豆荚
元数据:
姓名:redis
规格:
容器:
-姓名:redis
图片:redis:5.0.4
命令:
-redis服务器
-“/redis master/redis.conf”
环境:
-姓名:MASTER
值:“true”
端口:
-集装箱港口:6379
资源:
限制:
cpu:'0.1'
体积数量:
-mountPath:/redis主数据
名称:数据
-mountPath:/redis master
名称:config
卷数:
-名称:数据
emptyDir:{}
-名称:config
配置映射:
名称:redis配置
项目:
-关键字:redis配置
路径:redis.conf
Mu redis服务yaml如下所示:
apiVersion:v1
种类:服务
元数据:
姓名:redis master
标签:
应用程序:redis
角色:硕士
层:后端
规格:
端口:
-姓名:redis
港口:6379
目标港:6379
选择器:
应用程序:redis
角色:硕士
层:后端
我的应用程序的服务如下所示:
apiVersion:v1
种类:服务
元数据:
姓名:bff
注释:
普罗米修斯:真的
prometheus.io/port:'8080'
标签:
app:bff
规格:
端口:
-名称:外部
港口:80
目标端口:web
协议:TCP
-名称:metrics
端口:8080
targetPort:度量
协议:TCP
选择器:
app:bff
我尝试了以下类似问题的其他答案,但它们在我的情况下似乎不起作用。根本原因是您的服务
选择器
定义与您的POD标签不匹配
引用Kubernetes服务文件:
服务选择器的控制器持续扫描与其选择器匹配的POD,然后将任何更新发布到也称为“我的服务”的端点对象
有关完整文档,请参阅
简而言之,通过以下操作,您应该部署“redis master deployment.yaml”而不是裸pod。根本原因是您的服务
选择器
定义与pod的标签不匹配
引用Kubernetes服务文件:
服务选择器的控制器持续扫描与其选择器匹配的POD,然后将任何更新发布到也称为“我的服务”的端点对象
有关完整文档,请参阅
简言之,通过以下操作,您应该部署
部署“redis master deployment.yaml”而不是裸吊舱。共享kubectl的输出描述svc redis master。应用程序pod和redis pod也在同一命名空间中?pod在同一命名空间中运行,将在kubectl Descripte svc redis master的edit.share输出中添加Descripte输出。应用程序pod和redis pod也在同一名称空间中?pod在同一名称空间中运行,将在编辑中添加描述输出。现在我做了此更改,我得到了172.20.173.232:6379 ECONNREFUSEDI也从kubernetes官方文档中获取了此信息:以下是诊断问题的建议:1,在redis pod中执行,使用netstat确保redis正在运行并在0.0.0.0:6379上侦听。2、执行到应用程序机架中,安装telnet
命令行,尝试telnet 172.20.173.232 6379
检查从应用程序机架到服务的连接。从中,您需要部署部署
redis-master-deployment.yaml,而不是代码中的裸机架(kind:pod
)更新答案。很高兴您的问题得到了解决。现在我已经做了这个更改,我得到了172.20.173.232:6379 ECONNREFUSEDI从kubernetes的官方文档中也得到了这个信息:下面是诊断问题的建议:1,将exec插入您的redis pod,使用netstat确保redis正在运行并在0.0.0:6379上侦听。2、执行到应用程序机架中,安装telnet
命令行,尝试telnet 172.20.173.232 6379
检查从应用程序机架到服务的连接。从中,您需要部署部署
redis-master-deployment.yaml,而不是代码中的裸机架(kind:pod
)更新答案。很高兴你的问题解决了。