Невозможно запустить функцию Kubeless с триггером Kubeless Kafka
Я пытаюсь запустить функцию Kubeless (написанную как метод Java), но, похоже, она не работает. Я перепробовал все, что мог, но у меня закончились идеи. Ниже представлен метод Java (на данный момент это в основном эхо-сервис).
package io.kubeless;
import io.kubeless.Context;
import io.kubeless.Event;
public class MyHandler {
public String handle(Event event, Context context) {
return event.Data;
}
}
Метод был развернут с использованием следующего:
$ kubeless function deploy my-handler --runtime java1.8 --handler MyHandler.handle --from-file src/main/java/io/kubeless/MyHandler.java
Я убедился, что он работает, выполнив следующее:
$ kubeless function call my-handler --data "It works"
$ kubectl logs my-handler-6f67d567c5-r8cdb
0 [pool-1-thread-38] INFO io.kubeless.Handler - Response: It works
Затем я создал триггер Kafka и опубликовал для него сообщение, используя следующее.
$ kubeless trigger kafka create test --function-selector created-by=kubeless,function=my-handler --trigger-topic test-topic
$ kubeless topic publish --topic test-topic --data "Hello from Kafka"
$ kubectl logs my-handler-6f67d567c5-r8cdb
0 [pool-1-thread-38] INFO io.kubeless.Handler - Response: It works
Как видите, единственная запись в журнале - это запись о первоначальном вызове, который не был инициирован публикацией / подпиской Kafka. Я подтвердил, что триггер существует:
$ kubeless trigger kafka ls
NAME NAMESPACE TOPIC FUNCTION SELECTOR
test default test-topic function=my-handler
Насколько я могу судить, кажется, что Kafka работает (я также проверил журналы Kafka, но безрезультатно):
$ kubectl get pods --namespace=kubeless
NAME READY STATUS RESTARTS AGE
kafka-0 1/1 Running 0 170m
kafka-trigger-controller-f6f7c699f-m6mcd 1/1 Running 0 170m
kubeless-controller-manager-59d484f4d-9wlhq 3/3 Running 10 4d22h
zoo-0 1/1 Running 0 170m
Почему публикация не запускает функцию? Любые предложения приветствуются, и я заранее благодарю вас.
1 ответ
Я понял это, и есть проблема с Kubeless kafka -trigger. По сути, я получаю этот журнал, когда сообщение перехватывается контроллером и пытается запустить функцию:
time="2020-07-14T22:00:15Z" level=error msg="Unable to elaborate request: Unable to find the service for function my-handler"
Это означает, что контроллер не может найти my-handler
сервис для запуска функции. Если вы видите код, вы видите, что это вызов сервера API K8s. Итак, я предполагаю, что в более новых версиях K8s есть несоответствие версии API. Мой серверv1.18.2
. Я создал эту проблему для отслеживания.