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

jrcvhitl  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(658)

在我的集群中,我有一个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

我试着按照其他答案回答类似的问题,但他们似乎不适合我的情况。

xkrw2x1b

xkrw2x1b1#

根本原因是你的服务 selector 定义与你的豆荚标签不匹配。
引用kubernetes服务文档:
服务选择器的控制器连续扫描与其选择器匹配的pod,然后将任何更新发布到也称为“我的服务”的端点对象。
有关完整文档,请参见此链接。
简而言之,通过遵循这个kubernetes官方示例,您应该部署 deployment “redis master deployment.yaml”而不是裸吊舱。

相关问题