无法使用 Kubeless Kafka Trigger 触发 Kubeless 函数
Unable to Trigger Kubeless Function With Kubeless Kafka Trigger
我正在尝试触发 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
然后我 created a Kafka trigger 并使用以下内容向它发布了一条消息。
$ 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 pub/sub 触发的条目。我已验证触发器存在:
$ kubeless trigger kafka ls
NAME NAMESPACE TOPIC FUNCTION SELECTOR
test default test-topic function=my-handler
据我所知,Kafka 似乎是 运行ning(我也检查了 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
为什么发布不触发功能?如有任何建议,我将不胜感激,在此先感谢您。
我对此感到厌烦,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
服务来触发该功能。如果你看到 code, you see that it's a call to the K8s API server. So, my guess is that there's an API version mismatch on the newer K8s versions. My server is v1.18.2
. I've created this issue 跟踪。
我正在尝试触发 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
然后我 created a Kafka trigger 并使用以下内容向它发布了一条消息。
$ 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 pub/sub 触发的条目。我已验证触发器存在:
$ kubeless trigger kafka ls
NAME NAMESPACE TOPIC FUNCTION SELECTOR
test default test-topic function=my-handler
据我所知,Kafka 似乎是 运行ning(我也检查了 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
为什么发布不触发功能?如有任何建议,我将不胜感激,在此先感谢您。
我对此感到厌烦,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
服务来触发该功能。如果你看到 code, you see that it's a call to the K8s API server. So, my guess is that there's an API version mismatch on the newer K8s versions. My server is v1.18.2
. I've created this issue 跟踪。