背景
現(xiàn)在kubernetes廣泛應(yīng)用于devops各個(gè)領(lǐng)域吃溅,很多時(shí)候你可能需要使用Kubenetes Java客戶(hù)端庫(kù)來(lái)監(jiān)聽(tīng)Kubenets中的任何更改孕蝉,以便您可以設(shè)置鉤子邏輯缓艳,以便在K8s中的任何更改時(shí)調(diào)用業(yè)務(wù)邏輯處理這些數(shù)據(jù)馆衔。
痛點(diǎn)
一般情況下修己,默認(rèn)監(jiān)聽(tīng)所有的變動(dòng)信息是又浪費(fèi)資源又慢给郊,因此您可以通過(guò)安裝Kube標(biāo)簽來(lái)對(duì)特定更改進(jìn)行過(guò)濾監(jiān)聽(tīng)。這個(gè)博客就是來(lái)展示如何做到這一點(diǎn)彪笼。
檢查如何過(guò)濾已經(jīng)過(guò)濾哪個(gè)標(biāo)簽
這是Kubenetes LENS的快照頁(yè)面钻注,我將使用labelrun=dummy-service作為示例。如下圖所示配猫。
Java代碼示例
如果您在Kubenetse中的部署標(biāo)簽是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”標(biāo)簽的部署泵肄,這樣你就可以對(duì)此過(guò)濾過(guò)的子集進(jìn)行任何相應(yīng)的處理
參考鏈接
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-
–結(jié)束–
歡迎大家瀏覽關(guān)注我的公眾號(hào) “竹書(shū)紀(jì)年的IT男”. 更多類(lèi)似文章捆交,請(qǐng)?jiān)L問(wèn)我的網(wǎng)站www.todzhang.com