对不起,也许这不是问题。
将以下数据发布到网址
HTTP:// IP $:8080 /的API /扩展/ v1beta1 /命名空间/默认/部署/部署-1 /回滚
{"kind":"Deployment","apiVersion":"extensions\/v1beta1","name":"deployment-1","updatedAnnotations":"1111","rollbackTo":{"revision":0}}
返回错误:
{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Deployment in version \"v1beta1\" cannot be handled as a DeploymentRollback: converting (v1beta1.Deployment) to (extensions.DeploymentRollback): UpdatedAnnotations not present in src","reason":"BadRequest","code":400}
我的帖子数据有什么问题吗?
另一个问题:
如果部署有两个pod,则每个pod中都有两个容器。我想更新一个容器的图像(使用网址http://$ip:8080/apis/extensions/v1beta1/namespaces/default/deployments/$deployment_name
)。如果我只是更改第一个容器的图像,另一个容器就不见了!是对的吗?这意味着如果我想更新一个容器'标签或图像我需要在同一个窗格中定义容器的所有信息吗?
答案 0 :(得分:0)
UpdatedAnnotations应为map[string]string
,因此请尝试以下内容:
{
"kind":"Deployment",
"apiVersion":"extensions\/v1beta1",
"name":"deployment-1",
"updatedAnnotations": {"label":"1111"},
"rollbackTo":{"revision":0}
}
对于第二个问题,您应该能够仅修改要更改的容器图像。如果你使用PUT(或kubectl apply
),你需要提供完整的PodSpec,包括你没有改变的容器。
答案 1 :(得分:0)
我找到了第二个问题的答案 应该使用这样的API:
curl --request PATCH --header "Content-Type:application/strategic-merge-patch+json" http://$ip:8080/apis/extensions/v1beta1/namespaces/default/deployments/deployment-patch --data '{"spec":{"template":{"spec":{"containers":[{"name":"mofang-web","image":"abc.com\/docker\/mofang-web-cc:stable"}]}}}}'
但我仍然不明白这三种方法之间的区别:
application/json-patch+json
application/merge-patch+json
application/strategic-merge-patch+json