0

使用 postman 使用 post 方法在 kubernetes 中创建了一个作业,现在尝试使用 postman 使用 patch 方法修补相同的作业,我收到 400 个错误请求。

帖子标题:内容类型应用程序/yaml

发布方法主体:

---
apiVersion: batch/v1
kind: Job
metadata:
  name: pi
  labels:
    app: dev
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4

补丁标头:内容类型应用程序/策略合并补丁+json

标题中的内容类型

补丁请求正文:

{
  "apiVersion": "batch/v1",
  "kind": "Job",
  "metadata": {
    "name": "pi"
  },
  "spec": {
    "template": {
      "spec": {
        "containers": [
          {
            "name": "pi",
            "image": "perl",
            "command": [
              "perl",
              "-Mbignum=bpi",
              "-wle",
              "print bpi(2000)"
            ]
          }
        ],
        "restartPolicy": "Never"
      }
    },
    "backoffLimit": 5
  }
}

更改正文请检查链接。 补丁请求的正文

我所做的修改是将 backofflimit 更改为 5。我能够发布和修补其他资源,例如服务和部署,但我一直在修补工作,我对其他人也遵循完全相同的步骤。

错误我收到错误

4

2 回答 2

0

使用 'strategic-merge-patch+json' 类型,您应该在请求正文中使用这个 json 补丁:

{"spec":{"backoffLimit": 7}}

因为您的意图是根据 backoffLimit 键合并/替换现有对象的值。
检查文档以了解如何使用战略合并补丁来更新资源。

更新 请尝试使用 curl:

  1. 启动本地 Kubernetes 代理服务器:kubectl proxy
  2. curl -k -v -XPATCH -H "Content-Type: application/strategic-merge-patch+json" --data '{"spe":{"backoffLimit": 9}}' http://localhost:8001/apis/batch/v1/namespaces/default/jobs/pi

输出:

< HTTP/1.1 200 OK <-patch succeeded 
< Audit-Id: 02d97d05-2bfb-4500-ac34-c8eb04ff8503
< Content-Length: 1795
< Content-Type: application/json
< Date: Fri, 12 Jul 2019 13:54:37 GMT
< 
{
  "kind": "Job",
  "apiVersion": "batch/v1",
  "metadata": {
    "name": "pi",
    "namespace": "default",
    "selfLink": "/apis/batch/v1/namespaces/default/jobs/pi",
    "uid": "5ac61d6d-a4a0-11e9-abc7-42010a80012c",
    "resourceVersion": "4339038",
    "creationTimestamp": "2019-07-12T12:27:03Z",
    "labels": {
      "app": "dev"
    }
  },
  "spec": {
    "parallelism": 1,
    "completions": 1,
    "backoffLimit": 9 <-patch succeeded 

,

于 2019-07-12T13:34:51.223 回答
0

使用 Content-Type 作为 application/strategic-merge-patch+json

和身体

{“规格”:{“退避限制”:7}}

我已经重新创建了请求,并且效果很好。

第一次出错的事情是,即使标题中正确提到了“content-type”,因为“application/strategic-merge-patch+json”邮递员采用了错误的 Content-type,所以我删除了请求并重新创建了补丁请求具有相同的正文和标头,它工作得很好。

于 2019-07-17T05:46:45.403 回答