在我的集群中,我有一个nodejs应用程序pod和一个redis pod,我正在尝试从nodejs连接到redis,但是我得到以下错误: [ioredis] Unhandled error event: Error: getaddrinfo ENOTFOUND redis at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:60:26)
值得注意的是,在我的nodejs应用程序中,我指的是redis:6379 and 如果我把指针改成localhost:6379,我会得到一个 ECONNREFUSED
错误。
我的redis部署yaml如下所示:
apiVersion: v1
kind: Pod
metadata:
name: redis
spec:
containers:
- name: redis
image: redis:5.0.4
command:
- redis-server
- '/redis-master/redis.conf'
env:
- name: MASTER
value: 'true'
ports:
- containerPort: 6379
resources:
limits:
cpu: '0.1'
volumeMounts:
- mountPath: /redis-master-data
name: data
- mountPath: /redis-master
name: config
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: redis-config
items:
- key: redis-config
path: redis.conf
mu redis服务yaml如下:
apiVersion: v1
kind: Service
metadata:
name: redis-master
labels:
app: redis
role: master
tier: backend
spec:
ports:
- name: redis
port: 6379
targetPort: 6379
selector:
app: redis
role: master
tier: backend
我的应用程序的服务是这样的:
apiVersion: v1
kind: Service
metadata:
name: bff
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '8080'
labels:
app: bff
spec:
ports:
- name: external
port: 80
targetPort: web
protocol: TCP
- name: metrics
port: 8080
targetPort: metrics
protocol: TCP
selector:
app: bff
我试着按照其他答案回答类似的问题,但他们似乎不适合我的情况。
1条答案
按热度按时间xkrw2x1b1#
根本原因是你的服务
selector
定义与你的豆荚标签不匹配。引用kubernetes服务文档:
服务选择器的控制器连续扫描与其选择器匹配的pod,然后将任何更新发布到也称为“我的服务”的端点对象。
有关完整文档,请参见此链接。
简而言之,通过遵循这个kubernetes官方示例,您应该部署
deployment
“redis master deployment.yaml”而不是裸吊舱。