Как получить правильное обновленное количество модулей kubernetes из listPodForAllNamespacesCall с помощью Watch - PullRequest
0 голосов
/ 15 января 2019

Я создал 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()");
 }

}
...