问题标签 [knative-eventing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
knative - KNative Eventing 中的异步订阅/通知,而不是同步 HTTP
请注意,进入自定义服务的箭头颜色为蓝色,即只能通过 HTTP 协议调用服务。
HTTP 协议是同步的,也是面向请求/响应的。
这似乎与事件性质相矛盾,我们应该着眼于设计面向订阅/通知和异步的系统。
图中服务消息的来源是 Kafka。那是一个消息代理,其主要目的是支持异步消息传递和订阅/通知案例。
为什么 KNative Eventing 会将原始通道传输性质从异步订阅/通知更改为调用服务的同步请求/响应。
在 KNative Eventing 中只能通过 HTTP 调用服务是真的吗(无需自定义工作来开发自己的 sidecar 和服务包装器)?这看起来是一个很大的限制。
如果是,为什么会这样?是故意这样做的,还是临时解决方案。为什么服务不能直接从通道(例如由 Kafka 支持)消费以及为什么“通道订阅者”不能内置到服务 Docker 映像包装器或边车中。
google-kubernetes-engine - Knative 服务不能被 Knative Broker & Trigger 触发
我正在 GKE 中测试 Knative,这是我想做的:
但是,我在“default-broker-filter”的日志中收到以下错误:
我使用这个官方教程使用以下命令安装 Knative:
这是我用来在 python 中安装触发器和服务 hello world 的 yaml 模板:
然后我创建一个 pod 来执行我的 curl 命令:
你能告诉我这是怎么回事,因为我整个周末都没有找到任何线索吗?
谢谢,
apache-kafka - 每当kafka消费者服务(KafkaSource on Knative)上有任何http错误代码时如何重新传递消息
我正在使用 Knative Eventing(Kafka Source,它从 kafka Cluster 读取数据)来触发消费者服务,如果事件/消息没有成功处理(可能是任何原因),我想自动重新传递消息。我已尝试通读文档和 API 参考,但尚不清楚这是否可行。
问题:在 Knative 上,一旦 KafkaSource 将消息发送到消费者服务,消费者服务正在处理请求并发送 http 错误代码响应(基本上消息处理失败)并在消费者组中显示为延迟(待处理)。
预期:在这种情况下,希望在处理下一个顺序请求之前重新传递相同的消息。是否可以从 Kafka 源重新发送 mssage 或消费者服务重新发送失败的请求?
非常感谢!
斯里尼瓦斯 P.
autoscaling - 如何告诉 Knative Pod Autoscaler 不要杀死正在进行的长时间运行的 pod
我的目标: 实现一个每周运行一次的 cron 作业,我打算在 Knative 上实现这个拓扑以节省计算资源:
PingSource -> knative 服务
PingSource 将每周一次向 knative 服务发出一个虚拟事件,以调出 1 个 knative 服务 pod。knative service pod 会获取大量数据,然后进行处理。
我的担心:
如果我设置enable-scale-to-zero
为 true,Knative pod 自动缩放器可能会关闭 knative 服务 pod,即使该 pod 尚未完成其工作。
到目前为止,我探索了:
scale-to-zero-grace-period
which 可以配置为告诉自动缩放器在最后一个流量结束后应该等待多长时间才能关闭 pod 。但我不认为这种方法是微妙的。我更喜欢有点类似于 readinessProbe 或 livenessProbe。在发送终止信号之前,自动缩放器应该发送一个探测来了解 pod 是否正在处理某些东西。此外,根据 knative 的文档,有两种类型的事件接收器:可调用和可寻址。Addressable 和 Callable 都返回响应或确认。knative 自动缩放器是否会将 pod 视为处理请求,直到 pod 返回响应/确认?所以只要 pod 没有响应,它就不会被自动缩放器移除。
google-cloud-platform - 为什么我的 knative 触发状态 Unknown 由于 TopicReady Unknown?
最近我正在尝试 Knative 示例https://github.com/meteatamel/knative-tutorial/blob/master/docs/image-processing-pipeline.md,我使用默认代理(MTChannelBasedBroker)和触发器创建了 knative 触发器,我还在同一个命名空间中安装了 Google Cloud Pub/Sub Channel。我不确定是什么导致了这个错误。
knative - 如何使用 cloudevents sdk-javascript 回复 CloudEvent
我想使用 Knative Sequence 链接几个 ksvcs 但失败了。可以触发第一步 ksvc,但不能触发其余步骤。
在我的 ksvc(Node.js) 中,我使用了 CloudEvent js-sdk。我假设我需要在收到新的 CloudEvent 后返回它。所以这是我的代码:
knative - 如何验证Kafkachannel持久性?
我正在研究将通道实现从内存更改为 Kafka 的好处。我知道 inmemorychannel 不是持久的,而 Kafkachannel 是。
所以我假设 Kafkachannel 会像这样工作:
- 当一个 channelPod(kafka-ch-dispatcher Pod)在通过 Kafkachannel 注册的事件交付到 sink 之前宕机时,宕机前注册的事件会保留在 Kafkatopic 中。
- 当 kafka-ch-dispatcher 恢复时,Kafkatopic 中任何未投递到 sink 的事件都会被发送到 sink。
为了验证这个假设,我在确认向 Kafkatopic 注册的事件尚未交付后,杀死了 kafka-ch-dispatcher Pod。正如预期的那样,Kafkatopic 仍然有事件。然而,在等待之后,该事件从未交付到接收器。
我的假设错了吗?
还是确认方法不对?(有没有很好的方法来验证 Kafkachannel 持久性?)
我使用的频道和订阅如下。我在 knativetorial 命名空间中运行它们。
knative - KafkaSource 到 camel-k 集成无法翻译 CloudEvent
我正在尝试创建一个使用骆驼集成作为接收器的 Kafka 源。
当我向主题发送消息时demo-topic
,日志正在尝试将消息转换为 CloudEvent 消息,但失败了。
我遵循了Knative 示例并且它有效。日志还显示该消息必须转换为 CloudEvent 消息。
有谁知道将 Camel 集成用作 Sink 时会导致处理错误的原因是什么?
卡夫卡来源:
日志:
knative - 在没有互联网的情况下安装 Knative
是否可以在没有互联网的情况下安装 Knative?了解它需要 K8 在安装过程中从互联网上提取图像。我可以将所有必要的图像下载到私有存储库并应用 yaml 进行安装吗?