Следите за состоянием модуля и реагируйте на него с помощью java-клиента для Kubernetes - PullRequest
0 голосов
/ 12 декабря 2018

Я пишу интеграционные тесты с использованием библиотеки ScalaTest.Для настройки среды я использую Spark оператор в Kubernetes.Для работы с API K8s я использую библиотеку java-client .Я хочу создать Spark оператор в beforeAll методе и подписаться, чтобы посмотреть его статус.В событии AfterAll я хочу удалить модуль.Проблема в том, что когда я пытаюсь извлечь статус модуля с помощью java-клиента, я получаю Pending.В то время как команда kubectl get pods -w дает такие результаты:

spark-example-driver   0/1   Pending   0     0s
spark-example-driver   0/1   Pending   0     0s
spark-example-driver   0/1   Init:0/1   0     0s
spark-example-driver   0/1   Init:ErrImageNeverPull   0     4

Так что состояние модуля инициализации не отображается даже через некоторое время.Что может быть причиной такого поведения?

Код:

  val namespace = "default"
  val watchPodsCalls = createWatchOnPodsCalls()

  def createWatchOnPodsCalls() = {
    client.getHttpClient.setReadTimeout(0, TimeUnit.MILLISECONDS)

    val watch: Watch[V1Namespace]  = Watch.createWatch(client,
      coreApi.listNamespacedPodCall(namespace, "true", null, null, false, null, 0, null, 0, true, null, null),
      new TypeToken[Watch.Response[V1Namespace]]{}.getType)
    watch
  }

override def beforeAll(): Unit = {
    val body = convertYamlToJson()
    val sparkAppCreation = apiInstance.createNamespacedCustomObject(group, version, namespace, plural, body,"true")
    println(sparkAppCreation)

    val watchPodsCallsIterator = createWatchOnPodsCalls()

    while(watchPodsCallsIterator.hasNext){
        println("Pod status: " + watchPodsCallsIterator.next().`object`.getStatus.getPhase)
    }

  override def afterAll(): Unit = {
    val name = "spark-example"
    val deleteOptions = new V1DeleteOptions

    watchPodsCalls.close()
    val sparkAppTeardown = apiInstance.deleteNamespacedCustomObject(group, version, namespace, plural, name, deleteOptions, 0, false, "Foreground")
    println(sparkAppTeardown)
  }
...