[英]How to delete a label for a kubernetes pod
我想通过 kubernetes API 从节点或 pod 中删除标签,我的 kubernetes 版本:1.24
kubectl get pod --show-labels | grep all-flow-0fbah
all-flow-0fbah 1/1 Running 2 9d app=all-flow,op=vps1,version=1001
我使用如下命令:
curl --request PATCH --header "Content-Type:application/json-patch+json" http://10.93.78.11:8080/api/v1/namespaces/default/pods/all-flow-0fbah --data '{"metadata":{"labels":{"a":"b"}}}'
但这不起作用。 返回消息如下:
{
"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
}
然后我像这样更改 curl 标题:
curl --request PATCH --header "Content-Type:application/merge-patch+json" http://10.93.78.11:8080/api/v1/namespaces/default/pods/all-flow-0fbah --data '{"meadata":{"labels":{"op":"vps3"}}}'
它不会删除标签,而是向该 pod 添加一个新标签。 那么有没有人可以告诉我如何删除像 use 命令这样的 pod 的标签:
kubectl label pod all-flow-0fbah key-
谢谢!
我自己正在寻找 CLI 命令。 这是对我有用的:
kubectl patch pod <podname> --type=json -p='[{"op": "remove", "path": "/metadata/labels/somelabelkey"}]'
最方便的方法是使用kubectl edit pods all-flow-0fbah
。 只需删除编辑器中的标签字段。
请参阅http://kubernetes.io/docs/user-guide/kubectl/kubectl_edit/
我认为这是做到这一点的直接方法,我发现它更容易:
kubectl label pod <pod-name> <label key>-
除了上面的答案之外,值得一提的是,如果您使用 JSON Patch 删除带有斜杠 ( /
) 或波浪号 ( ~
) 的标签/注释,则必须按照http:// 中所述将它们转义jsonpatch.com :
~
变成~0
/
变成~1
正如 workhardcc 在评论中发布的那样,这样做的方法是
curl -k -v -XPATCH -H "Accept: application/json, /" -H "Content-Type: application/strategic-merge-patch+json" 10.10.10.10:443/api/v1/namespaces/default/pds/all-flow-946y0 --data '{"metadata":{"labels":{"$patch": "delete", "app":"all-flow"}}}'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.