我正在使用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”标签。
1条答案
按热度按时间czfnxgou1#
为了实现你的目标,你可能需要使用战略合并补丁。
尝试运行类似这样的代码:
要获取确切的pod名称,请运行:
我已经使用了你在描述中列出的必要细节,但请自己再次检查,因为我没有重现这个问题。然而,它在过去工作得很好,所以我认为我们在这里很好。
有关战略合并修补程序的详细信息,请参阅此documentation
如果有帮助请告诉我。