如何使用kubernetes API删除节点标签

时间:2019-04-29 10:26:13

标签: kubernetes

我正在使用kubernetes API处理kubernetes节点标签。对于标签添加,它可以工作。但是对于标签删除,不知道正确的方法。

这是添加标签的演示代码:

key := "testkey"

value := "testvalue"

patch := `{"metadata":{"labels":{"` + key + `":"` + value + `"}}}`

_, err := clientset.CoreV1().Nodes().Patch("10.x.x.x", types.StrategicMergePatchType, []byte(patch))

那删除案例呢? 我已经在Stack Overflow中尝试了一些答案,例如:

patch := `{"metadata":{"labels":{"$patch":"delete","testkey":"testvalue"}}}

它将删除此节点上的所有标签,但不会删除唯一的“ testkey”标签。

1 个答案:

答案 0 :(得分:1)

为了实现您的目标,您可能需要使用战略合并补丁。

尝试运行类似这样的内容:

curl -k -v -XPATCH -H "Accept: application/json, /" -H "Content-Type: application/strategic-merge-patch+json" 10.x.x.x:x/api/v1/namespaces/default/pds/testvalue-xxxxx --data '{"metadata":{"labels":{"$patch": "delete", "testkey":"testvalue"}}}'

要获取确切的Pod名称,请运行:

kubectl get pod --show-labels | grep testvalue

我已使用了您在说明中列出的必要详细信息,但由于我没有重现此问题,因此请您自己再次检查。但是过去它运行良好,所以我认为我们在这里很好。

有关战略合并补丁的更多详细信息,请参见此documentation

请让我知道是否有帮助。