由于扩大规模,POD 正在终止并再次创建,它是 运行 两次

POD is being terminated and created again due to scale up and it's running twice

我有一个运行代码的应用程序,最后它会发送一封包含数据报告的电子邮件。当我在 GKE 上部署 pods 时,某些 pods 被终止并由于 Auto Scale 创建了一个新的 pod,但问题是终止是在之后完成的我的代码已完成,针对相同数据发送了两次电子邮件。

这是部署的 JSON 文件 API:

{
  "apiVersion": "batch/v1",
  "kind": "Job",
  "metadata": {
    "name": "$name",
    "namespace": "$namespace"
  },
  "spec": {
    "template": {
      "metadata": {
        "name": "********"
      },
      "spec": {
        "priorityClassName": "high-priority",
        "containers": [
          {
            "name": "******",
            "image": "$dockerScancatalogueImageRepo",
            "imagePullPolicy": "IfNotPresent",
            "env": $env,
            "resources": {
              "requests": {
                "memory": "2000Mi",
                "cpu": "2000m"
              },
              "limits":{
                  "memory":"2650Mi",
                  "cpu":"2650m"
              }            
             }
          }
        ],
        "imagePullSecrets": [
          {
            "name": "docker-secret"
          }
        ],
        "restartPolicy": "Never"
      }
    }
  }
}

这是 pod 事件的屏幕截图:

知道如何解决这个问题吗?

提前致谢。

"也许你受了这个"注意,即使你指定了.spec.parallelism = 1 and .spec.completions = 1 and .spec.template.spec.restartPolicy = "Never",同样程序有时可能会启动两次。” 来自文档。如果您在 yaml 文件中增加 terminationgraceperiodseconds 会发生什么? – “

@danyL

我的问题是我有另一个作业在我的节点上以更高的优先级部署 pods,所以它试图终止我的 运行 pods 但作业已经完成并且电子邮件已经发送,所以我通过修复请求和限制我所有 json 文件的资源来解决问题,我不知道它是否是完美的解决方案,但现在它解决了我的问题。

谢谢大家的帮助