Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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
Node.js Kubernetes群集中节点中的Redis connect EconnResult_Node.js_Kubernetes_Redis - Fatal编程技术网

Node.js Kubernetes群集中节点中的Redis connect EconnResult

Node.js Kubernetes群集中节点中的Redis connect EconnResult,node.js,kubernetes,redis,Node.js,Kubernetes,Redis,我正在部署一个具有3个副本的NodeJS服务器,并连接到Redis以使用Sub/Pub功能 NodeJS: const redis = require('redis'); const REDISPORT = 6379; const subscriber = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local'); const publisher = redis.createClient(REDISPORT,

我正在部署一个具有3个副本的NodeJS服务器,并连接到Redis以使用Sub/Pub功能

NodeJS:

const redis = require('redis');
const REDISPORT = 6379;
const subscriber = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local');
const publisher = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local');
apiVersion: apps/v1
kind: Deployment
metadata:
  name: car-server-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: car-server
    spec:
      containers:
        - name: car-server
          image: gcr.io/PROJECT_ID/IMAGE_SERVER:TAG
          ports:
            - containerPort: 8080
              name: nodejs-port
  selector:
    matchLabels:
      app: car-server
apiVersion: v1
kind: Service
metadata:
  name: car-server-service
spec:
  ports:
    - port: 8080
      protocol: TCP
  selector:
    app: car-server
  type: NodePort
apiVersion: v1
kind: Pod
metadata:
  name: redis
  labels:
    app: redis
spec:
  containers:
  - name: redis
    image: redis:5.0.4
    command:
      - redis-server
    env:
    - name: MASTER
      value: "true"
    ports:
    - containerPort: 6379
apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  ports:
    - port: 6379
      protocol: TCP
  selector:
    app: redis
  type: ClusterIP
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
  app: my-app
bases:
- ./yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ./yaml
在所有三个NodeJS吊舱中出现错误

Error: Redis connection to redis-service.default.svc.cluster.local:6379 failed - connect ECONNREFUSED 10.120.14.77:6379
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
Emitted 'error' event on RedisClient instance at:
    at RedisClient.on_error (/usr/src/app/node_modules/redis/index.js:341:14)
    at Socket.<anonymous> (/usr/src/app/node_modules/redis/index.js:222:14)
    at Socket.emit (events.js:315:20)
    at emitErrorNT (internal/streams/destroy.js:92:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  errno: 'ECONNREFUSED',
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '10.120.14.77',
  port: 6379
}
服务器服务。yml:

const redis = require('redis');
const REDISPORT = 6379;
const subscriber = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local');
const publisher = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local');
apiVersion: apps/v1
kind: Deployment
metadata:
  name: car-server-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: car-server
    spec:
      containers:
        - name: car-server
          image: gcr.io/PROJECT_ID/IMAGE_SERVER:TAG
          ports:
            - containerPort: 8080
              name: nodejs-port
  selector:
    matchLabels:
      app: car-server
apiVersion: v1
kind: Service
metadata:
  name: car-server-service
spec:
  ports:
    - port: 8080
      protocol: TCP
  selector:
    app: car-server
  type: NodePort
apiVersion: v1
kind: Pod
metadata:
  name: redis
  labels:
    app: redis
spec:
  containers:
  - name: redis
    image: redis:5.0.4
    command:
      - redis-server
    env:
    - name: MASTER
      value: "true"
    ports:
    - containerPort: 6379
apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  ports:
    - port: 6379
      protocol: TCP
  selector:
    app: redis
  type: ClusterIP
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
  app: my-app
bases:
- ./yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ./yaml
redis pod.yml:

const redis = require('redis');
const REDISPORT = 6379;
const subscriber = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local');
const publisher = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local');
apiVersion: apps/v1
kind: Deployment
metadata:
  name: car-server-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: car-server
    spec:
      containers:
        - name: car-server
          image: gcr.io/PROJECT_ID/IMAGE_SERVER:TAG
          ports:
            - containerPort: 8080
              name: nodejs-port
  selector:
    matchLabels:
      app: car-server
apiVersion: v1
kind: Service
metadata:
  name: car-server-service
spec:
  ports:
    - port: 8080
      protocol: TCP
  selector:
    app: car-server
  type: NodePort
apiVersion: v1
kind: Pod
metadata:
  name: redis
  labels:
    app: redis
spec:
  containers:
  - name: redis
    image: redis:5.0.4
    command:
      - redis-server
    env:
    - name: MASTER
      value: "true"
    ports:
    - containerPort: 6379
apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  ports:
    - port: 6379
      protocol: TCP
  selector:
    app: redis
  type: ClusterIP
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
  app: my-app
bases:
- ./yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ./yaml
redis服务。yml:

const redis = require('redis');
const REDISPORT = 6379;
const subscriber = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local');
const publisher = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local');
apiVersion: apps/v1
kind: Deployment
metadata:
  name: car-server-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: car-server
    spec:
      containers:
        - name: car-server
          image: gcr.io/PROJECT_ID/IMAGE_SERVER:TAG
          ports:
            - containerPort: 8080
              name: nodejs-port
  selector:
    matchLabels:
      app: car-server
apiVersion: v1
kind: Service
metadata:
  name: car-server-service
spec:
  ports:
    - port: 8080
      protocol: TCP
  selector:
    app: car-server
  type: NodePort
apiVersion: v1
kind: Pod
metadata:
  name: redis
  labels:
    app: redis
spec:
  containers:
  - name: redis
    image: redis:5.0.4
    command:
      - redis-server
    env:
    - name: MASTER
      value: "true"
    ports:
    - containerPort: 6379
apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  ports:
    - port: 6379
      protocol: TCP
  selector:
    app: redis
  type: ClusterIP
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
  app: my-app
bases:
- ./yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ./yaml

尝试了几个小时,最后修复了它。当我创建kustomization.yml时,这是一个小错误。因此,基本上与Redis或NodeJS无关

以前的错误文件:kustomization.yml:

const redis = require('redis');
const REDISPORT = 6379;
const subscriber = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local');
const publisher = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local');
apiVersion: apps/v1
kind: Deployment
metadata:
  name: car-server-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: car-server
    spec:
      containers:
        - name: car-server
          image: gcr.io/PROJECT_ID/IMAGE_SERVER:TAG
          ports:
            - containerPort: 8080
              name: nodejs-port
  selector:
    matchLabels:
      app: car-server
apiVersion: v1
kind: Service
metadata:
  name: car-server-service
spec:
  ports:
    - port: 8080
      protocol: TCP
  selector:
    app: car-server
  type: NodePort
apiVersion: v1
kind: Pod
metadata:
  name: redis
  labels:
    app: redis
spec:
  containers:
  - name: redis
    image: redis:5.0.4
    command:
      - redis-server
    env:
    - name: MASTER
      value: "true"
    ports:
    - containerPort: 6379
apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  ports:
    - port: 6379
      protocol: TCP
  selector:
    app: redis
  type: ClusterIP
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
  app: my-app
bases:
- ./yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ./yaml
我把CommonLabel放在这里,kustomize覆盖了我的Redis标签,导致了网络错误

这是因为我在redis pod中也使用了“应用程序标签”

新文件:kustomization.yml:

const redis = require('redis');
const REDISPORT = 6379;
const subscriber = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local');
const publisher = redis.createClient(REDISPORT, 'redis-service.default.svc.cluster.local');
apiVersion: apps/v1
kind: Deployment
metadata:
  name: car-server-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: car-server
    spec:
      containers:
        - name: car-server
          image: gcr.io/PROJECT_ID/IMAGE_SERVER:TAG
          ports:
            - containerPort: 8080
              name: nodejs-port
  selector:
    matchLabels:
      app: car-server
apiVersion: v1
kind: Service
metadata:
  name: car-server-service
spec:
  ports:
    - port: 8080
      protocol: TCP
  selector:
    app: car-server
  type: NodePort
apiVersion: v1
kind: Pod
metadata:
  name: redis
  labels:
    app: redis
spec:
  containers:
  - name: redis
    image: redis:5.0.4
    command:
      - redis-server
    env:
    - name: MASTER
      value: "true"
    ports:
    - containerPort: 6379
apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  ports:
    - port: 6379
      protocol: TCP
  selector:
    app: redis
  type: ClusterIP
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
  app: my-app
bases:
- ./yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ./yaml

编辑问题以添加kubectl Descripte svc redis服务的输出