Node.js Kubernetes群集中节点中的Redis connect EconnResult
我正在部署一个具有3个副本的NodeJS服务器,并连接到Redis以使用Sub/Pub功能 NodeJS: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,
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服务的输出