[英]How to control numbers of container running inside Job on 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.