Как удалить метку узла с помощью API kubernetes - PullRequest
1 голос
/ 29 апреля 2019

Я работаю с метками узлов 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))

Так что насчет случая удаления? Я перепробовал некоторые ответы в переполнении стека, например:

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

Он удалит все метки на этом узле, но не единственную метку «testkey».

1 Ответ

1 голос
/ 17 июня 2019

Чтобы достичь своей цели, вам может потребоваться использовать стратегическое исправление слияния.

Попробуйте выполнить что-то вроде этого:

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"}}}'

Чтобы получить точное имя модуля, выполните:

kubectl get pod --show-labels | grep testvalue

Я использовал необходимые данные, которые вы перечислили в описании, но, пожалуйста, проверьте их самостоятельно, поскольку я не воспроизводил эту проблему.Однако в прошлом все работало нормально, поэтому я думаю, что у нас все хорошо.

Подробнее о патче стратегического слияния см. В этой документации

Пожалуйста, дайте мне знать, еслиэто помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...