背景
现在kubernetes广泛应用于devops各个领域,很多时候你可能需要使用Kubenetes Java客户端库来监听Kubenets中的任何更改,以便您可以设置钩子逻辑,以便在K8s中的任何更改时调用业务逻辑处理这些数据。
痛点
一般情况下,默认监听所有的变动信息是又浪费资源又慢,因此您可以通过安装Kube标签来对特定更改进行过滤监听。这个博客就是来展示如何做到这一点。
检查如何过滤已经过滤哪个标签
这是Kubenetes LENS的快照页面,我将使用labelrun=dummy-service作为示例。如下图所示。
Java代码示例
如果您在Kubenetse中的部署标签是run=dummy-service,您可以使用以下代码逻辑
public void run() {
Watch<V1Deployment> watch = null;
try {
watch = Watch.createWatch(
client,
appsApi.listNamespacedDeploymentCall("YOU_NAME_SPACE", null, null, null, null, "run=dummy-service", null,
null, null, null, true, null),
new TypeToken<Watch.Response<V1Deployment>>() {
}.getType());
} catch (ApiException e) {
LOGGER.error("Error occurred in DeploymentWatcher,", e);
}
assert watch != null;
watch.forEach(this::setMetadata);
}
因此,上述代码将返回所有带有“run=dummy-service”标签的部署,这样你就可以对此过滤过的子集进行任何相应的处理
参考链接
https://appdoc.app/artifact/io.kubernetes/client-java-api/0.1/io/kubernetes/client/apis/AppsV1beta1Api.html#listNamespacedDeploymentCall-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.Integer-java.lang.Boolean-io.kubernetes.client.ProgressResponseBody.ProgressListener-io.kubernetes.client.ProgressRequestBody.ProgressRequestListener-
–结束–
欢迎大家浏览关注我的公众号 “竹书纪年的IT男”. 更多类似文章,请访问我的网站www.todzhang.com