Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 从同一集群中的另一个pod连接到redis pod_Kubernetes_Redis - Fatal编程技术网

Kubernetes 从同一集群中的另一个pod连接到redis pod

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

在我的集群中,我有一个nodejs应用程序pod和一个redis pod,我正试图从nodejs连接到redis,但我得到以下错误:

[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
)更新答案。很高兴你的问题解决了。