Kubernetes合并了删除的工作和新工作

问题描述 投票:0回答:1

我有一个谷歌云功能,当文件上传到存储桶时触发。该函数连接到kubernetes集群(使用this library),删除与标签purpose: 'address-migration'匹配的给定命名空间中的任何现有作业,并创建新作业。

更具体地说,这是我的代码:

const jobsListResponse = await clientInstance.api.batch.v1.jobs.get();
const foundJob = jobsListResponse.body.items.find(job => (
    job.metadata.namespace === 'microservice' &&
    job.metadata.labels && job.metadata.labels['purpose'] === 'address-migration'
));

if (foundJob !== undefined) {
    const deleteResponse = await clientInstance.api.batch.v1.namespace('microservice').job(foundJob.metadata.name).delete();
    console.log('Deleted old job', deleteResponse);
}
const jobManifest = require('./jobManifest.json');
jobManifest.metadata.name += (new Date()).getTime().toString();
jobManifest.spec.template.spec.containers[0].env.push({
    name: 'DP',
    value: targetLink
});
const createJobResponse = await clientInstance.api.batch.v1.namespace('microservice').jobs.post({body: jobManifest});
console.log('Created new job', createJobResponse);

当函数第一次执行并且之前没有任何作业时,它创建了它并且它成功运行。

但是,当第二次触发该功能时,旧作业似乎与新作业合并。

新工作现在应该有像address-migration-${timestamp}这样的名字。但相反,它是address-migration-15361359838821536136672927。由于奇怪的原因,新时间戳附加到现有名称(包括旧时间戳)。

此外,还将新的环境变量合并到其中。我现在在清单中有两个DP条目:

- name: DP
  value: gs://dpdat/dp2.dat
- name: DP
  value: gs://dpdat/dp3.dat

毕竟,我刚删除的工作似乎与我之后直接创建的工作合并。

node.js kubernetes google-cloud-functions
1个回答
0
投票

我的错。谷歌云功能是有状态的。我认为它会像过去那样为每个请求提供一次节点。不,我对我的要求的变化('./ jobManifest.json')在记忆中是有状态的。一旦功能“冷却”(暂时不执行)节点也退出,导致状态重置。解释为什么它有时工作,有时不工作。

结论:Google云功能在给定的时间内保持温暖。在内存中,更改可能会持续存在于以下请求中。

© www.soinside.com 2019 - 2024. All rights reserved.