Kubernetes - 作业调度 API
Posted
技术标签:
【中文标题】Kubernetes - 作业调度 API【英文标题】:Kubernetes - Job scheduling 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 端点的任何文档?
【参考方案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
【讨论】:
以上是关于Kubernetes - 作业调度 API的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Google Cloud 调度程序 Python api 创建作业