Я создал watch service
для получения обновленных результатов модуля, но он не собирает правильные данные во время выполнения.
Чтобы проверить это, я запустил скрипт для удаления 5 модулей, а затем создал 5 новых модулей с интервалом в 5 минут.
Я запустил службу часов, чтобы проверить, правильно ли она фиксирует результат. Служба часов имеет тенденцию фиксировать правильный результат в течение примерно 2 часов, а затем я обнаружил расхождение, я думаю, это из-за перезапуска службы часов, и он показывает неправильные результаты.
Фактические number of active pods
и number of pods
, которые показывает служба часов, были другими !. дайте мне знать, какие изменения необходимы для получения правильного обновленного результата pods.
Пожалуйста, найдите ниже Java код.
Configuration.setDefaultApiClient(client);
client.getHttpClient().setReadTimeout(180, TimeUnit.SECONDS);
api = new CoreV1Api(client);
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.execute(() -> {
try {
watchPods();
} catch (Exception e) {
e.printStackTrace();
try {
Thread.sleep(15000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
});
private void watchPods() throws ApiException {
while (true) {
Watch < V1Pod > watch = Watch.createWatch(client, api.listPodForAllNamespacesCall(null, null, null, null, null,
null, null, null, Boolean.TRUE, null, null), new TypeToken < Watch.Response < V1Pod >> () {}.getType());
for (Watch.Response < V1Pod > item: watch) {
V1PodStatus podStatus = item.object.getStatus();
String name = item.object.getMetadata().getName();
String status = podStatus.getPhase();
String kind = item.object.getKind();
String details = podStatus.toString();
System.out.printf("NAME: %s | KIND: %s | STATUS: %s | DETAILS: %n%s%n====================%n", name, kind, status, details);
}
System.out.println("Restarting watchPods()");
}
}