K8s:获取对 Kubernetes REST API 服务器的 PATCH 请求的 HTTP 415
K8s: gets HTTP 415 for PATCH request to Kubernetes REST API server
我已经看到 Kubernetes REST API 参考手册支持 PATCH 请求 link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#patch-ingress-v1beta1-networking-k8s-io
HTTP Request
PATCH /apis/networking.k8s.io/v1beta1/namespaces/{namespace}/ingresses/{name}
但是,当通过 Postman 中的 Kubernetes REST API 服务器向 Kubernetes 集群发送 PATCH 请求时,我收到 HTTP 415 Unsupported Media Type 错误。
我想在集群外部分更新我们指定的入口。为此,我添加了试用版的快照。
Kubernetes REST API server Ingress PATCH Request
我们的 Kubernetes 版本是:
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:13:54Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:05:50Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
正在修补 JSON:
{
"apiVersion": "networking.k8s.io/v1beta1",
"kind": "Ingress",
"metadata": {
"name": "demo-ingress",
"annotations": {
"nginx.org/rewrites": "serviceName=demo-service-235 rewrite=/"
}
},
"spec": {
"rules": [
{
"host": "www.demodeployment.com",
"http": {
"paths": [
{
"path": "/235/",
"backend": {
"serviceName": "demo-service-235",
"servicePort": 8088
}
}
]
}
}
]
}
}
我可以成功地使用 GET、POST、PUT 和 DELETE,在 PATCH 请求中我无法得到相同的结果。问题的根本原因可能是什么?你有什么想法?
在 header 中设置 Content-Type: application/merge-patch+json
。
此外,我建议首先尝试使用 kubectl patch --v=8
进行修补,增加详细程度,这将显示 kubectl 发送到 Kubernetes API 服务器的 http 请求和有效负载。然后你可以获取相同的请求有效负载并使用邮递员。
我通过设置以下 header 解决了同样的问题:
"Content-Type": "application/strategic-merge-patch+json"
我已经看到 Kubernetes REST API 参考手册支持 PATCH 请求 link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#patch-ingress-v1beta1-networking-k8s-io
HTTP Request
PATCH /apis/networking.k8s.io/v1beta1/namespaces/{namespace}/ingresses/{name}
但是,当通过 Postman 中的 Kubernetes REST API 服务器向 Kubernetes 集群发送 PATCH 请求时,我收到 HTTP 415 Unsupported Media Type 错误。
我想在集群外部分更新我们指定的入口。为此,我添加了试用版的快照。
Kubernetes REST API server Ingress PATCH Request
我们的 Kubernetes 版本是:
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:13:54Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:05:50Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
正在修补 JSON:
{
"apiVersion": "networking.k8s.io/v1beta1",
"kind": "Ingress",
"metadata": {
"name": "demo-ingress",
"annotations": {
"nginx.org/rewrites": "serviceName=demo-service-235 rewrite=/"
}
},
"spec": {
"rules": [
{
"host": "www.demodeployment.com",
"http": {
"paths": [
{
"path": "/235/",
"backend": {
"serviceName": "demo-service-235",
"servicePort": 8088
}
}
]
}
}
]
}
}
我可以成功地使用 GET、POST、PUT 和 DELETE,在 PATCH 请求中我无法得到相同的结果。问题的根本原因可能是什么?你有什么想法?
在 header 中设置 Content-Type: application/merge-patch+json
。
此外,我建议首先尝试使用 kubectl patch --v=8
进行修补,增加详细程度,这将显示 kubectl 发送到 Kubernetes API 服务器的 http 请求和有效负载。然后你可以获取相同的请求有效负载并使用邮递员。
我通过设置以下 header 解决了同样的问题:
"Content-Type": "application/strategic-merge-patch+json"