繁体   English   中英

如何删除 kubernetes pod 的标签

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM