在NodeJS express中运行cronjob触发器3次,托管在Google Kubernetes Engine上,有3个节点,如何在一个节点中运行cronjob?

yfjy0ee7  于 2023-03-17  发布在  Node.js
关注(0)|答案(1)|浏览(126)

我有一个场景,我使用nodejs中的node-cron库每1天发送一次电子邮件。服务器托管在GKE中,有三个节点。但是我每天收到3封电子邮件,我相信是从运行同一个预定函数的3个不同节点发送的。我如何克服这个问题,使我只从一个节点收到电子邮件?
我尝试使用cluster

if(cluster.isMaster){
   initScheduleFunctions()
}

在我的index.js.

xuo3flqw

xuo3flqw1#

因此,您当前的部署有3个副本:

apiVersion: apps/v1
kind: Deployment
metadata: null
name: backend-deploy
spec: null
replicas: 3
selector: null
matchLabels: null
app: app
template:
  metadata: null
  labels:
    app: app
  spec:
    containers:
      - image: 'gcr.io/vektor-dev-351106/vektor-pm-be:latest'
        name: vektor-be
        imagePullPolicy: Always
        ports:
          - containerPort: 4000

如果要继续将作业作为部署运行,只需将复制副本修改为1:

apiVersion: apps/v1
kind: Deployment
metadata: null
name: backend-deploy
spec: null
replicas: 1
selector: null
matchLabels: null
app: app
template:
  metadata: null
  labels:
    app: app
  spec:
    containers:
      - image: 'gcr.io/vektor-dev-351106/vektor-pm-be:latest'
        name: vektor-be
        imagePullPolicy: Always
        ports:
          - containerPort: 4000

相关问题