【发布时间】:2021-07-15 05:31:10
【问题描述】:
我有一个在 pod 上运行健康检查的应用程序。鉴于运行状况检查,我正在尝试将 pod 的标签选择器从 active: true 修补为 active: 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 的标签设置为 true。这些变化没有反映出来。我认为这个问题是由补丁主体提供的语法引起的。以上是访问 pod 中标签的正确语法吗?
【问题讨论】:
-
/spec/template/...看起来像是来自 Deployment 或 StatefulSet;路径是否需要以/metadata开头? -
你说得很好,我是从部署中引用标签的路径,而不是在 pod 级别。
标签: api kubernetes java-client