【问题标题】:Kubernetes - Job scheduling APIKubernetes - 作业调度 API
【发布时间】:2018-07-09 19:20:27
【问题描述】:

我正在尝试在 Kubernetes 中安排作业。

https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/

可以使用以下命令创建作业。

$ kubectl create -f ./cronjob.yaml
cronjob "hello" created

是否有任何 REST API 可用于从 Java 客户端创建作业?

谢谢

【问题讨论】:

  • kubectl 实际上只是 REST API 的包装。
  • 所以,我们可以直接打剩余的端点。是否有关于作业调度的 REST 端点的任何文档?

标签: kubernetes


【解决方案1】:

the official API reference 中描述了相应的 REST 端点。您将在batch/v1beta1 API 组中找到CronJob 资源。要创建新的 CronJob 资源,您需要对 /apis/batch/v1beta1/namespaces/{namespace}/cronjobs URL 进行 POST 调用。

相应的 HTTP 请求可能如下所示:

POST /apis/batch/v1beta1/namespaces/default/cronjobs HTTP/1.1
Content-Type: application/json
Content-Length: ...
Authorization: ...
[other headers]

{
  "metadata": {
    "name": "some-cron"
  },
  "spec": {
    ...
  }
}

还有相同资源的旧版本,例如batch/v2alpha1 API group。根据经验,我建议您使用可用的最新 API 版本。特别是,不要在生产中依赖 alpha API;它们往往会在版本之间很快弃用。

要使用 Java 客户端创建 batch/v1beta1 CronJob,请查看 io.kubernetes.client.openapi.apis.BatchV1beta1Api 类的 createNamespacedCronJob method

【讨论】:

  • API 参考的 URL 已过时并指向 404。这是指向 API v1.17 reference 的链接
  • @suda 感谢您的提示!我已经更新了 anwser 中的链接,并在其他一些方面也更新了它。
【解决方案2】:

HTTP 请求

POST /apis/batch/v1beta1/namespaces/{namespace}/cronjobs

您可以在此处查看 API 概述:cronjob-v1beta1-batch

在请求正文中添加 CronJob 对象。

{
  "apiVersion": "batch/v1beta1",
  "kind": "CronJob",
  "metadata": {
    "name": "hello"
  },
  "spec": {
    "schedule": "*/1 * * * *",
    "jobTemplate": {

    }
  }
}

在此处查看其规格:writing-a-cron-job-spec

swagger.json的一部分

"post": {
 "description": "create a CronJob",
 "consumes": [
  "*/*"
 ],
 "produces": [
  "application/json",
  "application/yaml",
  "application/vnd.kubernetes.protobuf"
 ],
 "schemes": [
  "https"
 ],
 "tags": [
  "batch_v1beta1"
 ],
 "operationId": "createBatchV1beta1NamespacedCronJob",
 "parameters": [
  {
   "name": "body",
   "in": "body",
   "required": true,
   "schema": {
    "$ref": "#/definitions/io.k8s.api.batch.v1beta1.CronJob"
   }
  }
 ],
 "responses": {
  "200": {
   "description": "OK",
   "schema": {
    "$ref": "#/definitions/io.k8s.api.batch.v1beta1.CronJob"
   }
  },
  "201": {
   "description": "Created",
   "schema": {
    "$ref": "#/definitions/io.k8s.api.batch.v1beta1.CronJob"
   }
  },
  "202": {
   "description": "Accepted",
   "schema": {
    "$ref": "#/definitions/io.k8s.api.batch.v1beta1.CronJob"
   }
  },
  "401": {
   "description": "Unauthorized"
  }
 },
 "x-kubernetes-action": "post",
 "x-kubernetes-group-version-kind": {
  "group": "batch",
  "kind": "CronJob",
  "version": "v1beta1"
 }
}

查看全文swagger.json

【讨论】:

    猜你喜欢
    • 2019-09-13
    • 2020-07-02
    • 2017-04-30
    • 2018-12-29
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    相关资源
    最近更新 更多