如何通过 Kubernetes api 将节点设置为不可调度状态?

How can I set a node to unschedulable status via the Kubernetes api?

我正在尝试模仿 kubectl patch 的行为。我正在发送一个 HTTP PATCH,其 json 负载如下:

{
    "apiVersion": "v1",
    "kind": "Node",
    "metadata": {
        "name": "my-node-hostname"
    },
    "spec": {
        "unschedulable": true
    }
}

然而,无论我如何调整这个 JSON,我总是收到 415 和以下 JSON 状态:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "the server responded with the status code 415 but did not return more information",
  "details": {},
  "code": 415
}

即使将 kube-apiserver 上的调试设置为 1000,我也没有收到有关负载错误原因的反馈!

在通过 PATCH 发送的 JSON 有效负载中是否应该使用一种特定的格式才能使其正常工作?

在 Kubernetes Slack 频道的一位乐于助人的成员提到我可以通过 --verbose 标志从 kubectl patch 获取有效负载后,事实证明 Kubernetes 期望在您发送时获取 "Content-Type: application/strategic-merge-patch+json" PATCH 负载。