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

2w2cym1i  于 2023-06-21  发布在  Kubernetes
关注(0)|答案(1)|浏览(171)

我正在使用kubernetes API在go中处理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”标签。

czfnxgou

czfnxgou1#

为了实现你的目标,你可能需要使用战略合并补丁。
尝试运行类似这样的代码:

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
如果有帮助请告诉我。

相关问题