我有一个在pod上运行健康检查的应用程序。在进行了健康检查后,我试图修补pod的标签选择器,使其不处于活动状态:真到活动:false.下面是pod迭代的代码,用于更改每个pod的标签。
CoreV1Api corev1Api = new CoreV1Api();
for (V1Pod pod : fetchPodsByNamespaceAndLabel.getItems()) {
String jsonPatchBody = "[{\"op\":\"replace\",\"path\":\"/spec/template/metadata/labels/active\",\"value\":\"true\"}]";
V1Patch patch = new V1Patch(jsonPatchBody);
corev1Api.patchNamespacedPodCall(pod.getMetadata.getName(), namespace, patch, null, null, null, null, null);
}
我从Kubernetes文档部分的Patch Example中改编了jsonPatchBody作为示例。
运行的输出没有显示错误。预期行为是将这些pod的标签全部设置为“真”。这些更改没有反映出来。我认为该问题是由补丁程序主体提供的语法引起的。上述语法是否是访问pod中标签的正确语法?
1条答案
按热度按时间suzh9iv81#
在研究了更多的当前实现之后,客户端提供了PatchUtils api,它允许我构建一种类型的补丁。
我想确保补丁更新了标签选择器中某个属性的当前值,所以我从
V1Patch
api实现了一个PATCH_FORMAT_STRATEGIC_MERGE_PATCH
,引用了Kubernetes Patch Example来构建补丁的结构。