繁体   English   中英

通过昂首阔步运行容器部署执行后如何更新作业的kubernetes作业状态?

[英]How to update kubernetes job status of a job after being executed through swagger running a container deployment?

我走过了我的部署前端应用deployment.yaml文件使用minikube有swagger-ui 该应用程序仅接受json查询并在minikube上启动作业,该作业可运行并终止相关容器。 目前,我在minikube集群上构建了1个docker映像,该映像在作业开始后开始下载卫星映像。 现在,每当我向swagger-ui传递一个json查询时,它都会给我以下响应,其中作业状态为PENDING

{
  "workflowId": "2a94d0e3-7245-47e4-a9ce-821efce42eb8",
  "workflowName": "monitoring1",
  "status": "PENDING",
  "submittedAt": "2019-08-29T08:22:59.599469Z",
  "completedAt": null,
  "jobs": [

求职者

var jobStatus = JobStatus.PENDING
        when (action) {
            Watcher.Action.ADDED -> {
                if (job.status.startTime != null && job.status.active >= 0) {
                    jobStatus = JobStatus.RUNNING
                }
            }
            Watcher.Action.MODIFIED -> {
                if (job.status.completionTime != null && job.status.succeeded >= 0) {
                    jobStatus = JobStatus.COMPLETED
                } else if (job.status.failed != null) {
                    jobStatus = JobStatus.ERROR
                }
            }
            Watcher.Action.DELETED -> {
                log.info("DELETED")
            }
            Watcher.Action.ERROR -> {
                jobStatus = JobStatus.ERROR
            }
        }

在minikuber一侧,作业会在一段时间后开始和终止,但是在摇摇欲坠的一侧,作业的状态永远不会改变。 但是,当我尝试运行GET查询以列出所有作业时,我看到了完成的作业。 我的问题是工作完成后如何更新状态或通知用户?

问题的措辞可能是这样,但是开始工作后,由于工作尚未完成,因此有望立即获得“ PENDING状态作为立即响应。 此外,看起来您之后正在使用GET查询作业的状态,这也将导致预期的行为。

现在,Swagger支持通过回调进行长时间轮询 ,而Kubernetes API已读取对动词WATCH支持

监视将在更新对象时流式传输对象的结果。 类似于回调,watch用于响应资源更改。

此功能还扩展到您的特定对象Job

启用回调并通过watch监听API,将获得与运行相同的结果:

$ kubectl get job example-job --watch -o json

因此,对对象的任何更改都会在发生时反映出来,并返回一个JSON结果,您以后可以使用它来提供给客户端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM