我想使用RestApi来更新部署。 我用邮递员测试了它,但总是得到 415 回复。
信息如下:
类型: 补丁
网址:https://k8sClusterUrl:6443/apis/extensions/v1beta1/namespaces/ns/deployments/peer0
标题:
Authorization: bearer token
Content-Type:application/json
身体:
{
"kind": "Deployment",
"spec":
{
"template":
{
"spec":
{
"containers":[
{
"$setElementOrder/volumeMounts":[{"mountPath":"/host/var/run/"},{"mountPath":"/mnt"}],
"name":"peer0",
"image":"hyperledger/fabric-peer:x86_64-1.1.0"}
]
}
}
}
}
回复:
{
"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
}
我这个pod中有多个容器,只想申请特定的容器:
peer0
。$setElementOrder
var 有什么不同吗?
您可以尝试使用 body 并使用 Content-Type 为 application/json-patch+json,方法 PATCH:
[{
"op" : "replace",
"path" : "/spec/template/spec/container/0/$setElementOrder/volumeMounts",
"value" : "<value you want to replace>"
}]
对我有用的是将 content_type 设置为
application/merge-patch+json
,然后仅传递我想要的更改的正文,而不是我尝试的整个 DeploymentSpec。在你的情况下,这将是身体:
{
"spec": {
"template": {
"spec": {
"containers":[{
"$setElementOrder/volumeMounts":[{"mountPath":"/host/var/run/"},{"mountPath":"/mnt"}],
"name":"peer0",
"image":"hyperledger/fabric-peer:x86_64-1.1.0"
}]
}
}
}
}
不幸的是,我找不到记录的地方,这只是反复试验。