问题标签 [knative-serving]

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.

0 投票
1 回答
503 浏览

kubernetes - Knative 大使 Ingress

我正在尝试将 Knative 与大使一起使用。按照以下步骤安装 Knative,

安装 Knative

配置大使,

配置 Knative 使用 ambassdor 作为入口,

我已经在“ambassador-ns”命名空间下安装了大使。它工作正常。

部署 hello world 应用程序,

当我检查 ksvc 的状态时,

Knative 控制器日志

你能告诉我我做错了什么吗?

0 投票
1 回答
243 浏览

microk8s - 由于 x509 证书问题,knative helloworld 无法运行 microk8s

我已经使用 ubuntu(Ubuntu 20.04 LTS)在 microk8s 上安装了 knative。我正在尝试基本的 knative 示例,但它不起作用。1.首先我尝试了kn。(kn 无法读取配置,所以我使用microk8s.config > ~/kubeconfig

  1. 我尝试使用加载kubectl create,但得到相同的错误。任何想法。
0 投票
2 回答
244 浏览

knative - KNative 与 Istio 在端口 8080 上侦听

我已经设置了 Istio 的“入口网关”来监听 8080,并且在运行 Knative hello-world 时遇到了问题。有人这样设置 Knative 吗?

我希望互联网流量进入端口 8080 以显示 Knative hello world 的输出。

0 投票
0 回答
177 浏览

google-cloud-run - 请求在容器(应用程序)中成功完成后 1 分钟后始终返回 502

作为序言,我知道超过 1 分钟的 HTTP 请求是糟糕的设计,我将研究 Cloud Tasks,但我确实想弄清楚为什么会发生这个问题。

因此,如标题中所述,我对 Cloud Run 服务(完全托管)有一个简单的 API 请求,该请求需要超过 1 分钟的时间,该服务执行一些 DB 操作并生成 PDF 并将它们上传到 GCS。当我从客户端(浏览器)发出此请求时,它会在等待 1 分钟后始终返回 502 响应(可能来自 HTTP 负载均衡器):

502 错误

但是,当我查看日志时,请求已成功完成(大约 4 到 5 分钟):

请求日志

对于正在生成并上传到 GCS 的每个 PDF,我也会遇到这些“错误”之一,但从我读到的内容来看,这些不应该是真正的问题吗?:

沙盒错误

为了验证这不仅仅是应用程序代码或浏览器的一些超时问题,我在本地构建的随机 API 调用上放置了 5 分钟的睡眠,一切正常且花花公子。

我已将 Cloud Run 上的请求超时设置为最大值(15 分钟),将最大并发设置为默认 80,将 CPU 和 RAM 的数量分别设置为 2 和 2GB,并将 Fastify(node.js)服务器上的超时设置为 15 分钟出色地。此外,在我收到 502 错误时,我查看了日志并没有发现表明实例内存不足或任何其他错误的错误。最后,我还按照建议使用 strace 更深入地查看系统调用,以防万一那里出了什么问题,但从我所见,一切看起来都很好。

最后,我怀疑容器和网关/负载均衡器之间的路由存在一些奇怪的竞争条件,但我对 Knative(构建 Cloud Run 的基础上)几乎一无所知,所以这只是一种预感。

如果有人对为什么会发生这种情况有更多的想法,请告诉我!

0 投票
2 回答
364 浏览

kubernetes - 在 tekton 管道中使用 knctl/kubectl 将镜像部署到 Knative 服务

我正在阅读官方Tekton 文档kubectl,它使用标准部署对象清单将映像部署到 Kubernetes 。但是,我正在尝试使用 Tekton 管道作为 CI/CD 来部署在 knative 服务中,该服务应该使用knctlkubectl使用 knative 服务 yaml 而不是knative 服务规范的部署 yaml

就像是

在这种情况下,我如何利用 Tekton。如果我要将镜像安装到任何随机的 Kubenetes 集群,我可以使用任何其他 CI/CD 工具以及部署清单。我相信 Tekton 应该会取代 Knative 构建以使其变得简单。

0 投票
1 回答
281 浏览

kubernetes - 如何在 Knative 中设置 MaxRevisionTimeoutSeconds?

我已经使用 Cloud run on gke 部署了一项服务,它使用 Knative 作为 k8s 的抽象。在 knative 默认配置中默认MaxRevisionTimeoutSeconds设置为 600s,但根据此PR ,这是可自定义的。

我在 Knative 官方文档中找不到任何内容,有人可以在这里帮助我吗?

更新

在深入挖掘了 knative 源代码和文档之后。看起来 是在MaxRevisionTimeoutSeconds中定义的resource=ConfigMap/config-defaults。所以必须用自定义值更新它。

由此看来我们可以使用名为 as 的东西operator来修改 ConfigMap 资源,但它不起作用可能是因为 gcp 不使用操作符来安装 Knative 组件。无论如何,我继续安装操作员,然后用来resource=knativeserving覆盖配置默认值。但是当我尝试重新部署服务时,这也不起作用。

下一个解决方案是使用kubectl edit. 我什至尝试这样做,但遇到了奇怪的行为。在我用来kubectl describe检查更改的值时编辑 YAML 文件后,它有时会显示修改后的值,有时会显示旧值,有时甚至不会显示 YAML 中的特定键值对。此外,在进行此编辑后尝试重新部署服务时,它也不起作用。

如果有人能帮我解决这个问题,那就太好了。

0 投票
2 回答
228 浏览

apache-kafka - 每当kafka消费者服务(KafkaSource on Knative)上有任何http错误代码时如何重新传递消息

我正在使用 Knative Eventing(Kafka Source,它从 kafka Cluster 读取数据)来触发消费者服务,如果事件/消息没有成功处理(可能是任何原因),我想自动重新传递消息。我已尝试通读文档和 API 参考,但尚不清楚这是否可行。

问题:在 Knative 上,一旦 KafkaSource 将消息发送到消费者服务,消费者服务正在处理请求并发送 http 错误代码响应(基本上消息处理失败)并在消费者组中显示为延迟(待处理)。

预期:在这种情况下,希望在处理下一个顺序请求之前重新传递相同的消息。是否可以从 Kafka 源重新发送 mssage 或消费者服务重新发送失败的请求?

非常感谢!

斯里尼瓦斯 P.

0 投票
2 回答
224 浏览

kubernetes - 带有 Keycloak 网关守卫边车的 Knative 服务

我正在尝试部署以下服务:

失败并出现以下错误:

现在,如果我阅读规范(https://knative.dev/v0.15-docs/serving/getting-started-knative-app/),我可以看到这个例子:

它具有完全相同的结构。现在,我的问题是:

  1. 如何在不等待部署的情况下验证我的 yam?Intellij 有一个 k8n 插件,但我找不到机器可消耗的 serving.knative.dev/v1 的 CRD 模式。( https://knative.dev/docs/serving/spec/knative-api-specification-1.0/ )
  2. knative 允许有多个容器吗?(该配置与 apiVersion 完美配合:apps/v1 种类:部署)
0 投票
1 回答
179 浏览

kubernetes - 在 Knative 服务上启用 HTTPS

您好,我已经部署了一个运行我的应用程序的 EKS 集群,在 serving.knative.dev/route=helloworld-go下我还使用 ACM 配置了 EKS ELB,但仍然路由在 kubectl 上显示 http,是否需要配置 knative 服务在我们已经使用 ACM 设置 ELB 之后,让 pod 加密以使其成为 https

第一张图片

0 投票
1 回答
240 浏览

knative - knative:基于自定义标头的路由?

我们可以创建一个有两个修订版的 knative 服务,然后我们可以像这样配置流量。

我们可以使用 header "Knative-Serving-Tag: v2" 来路由到 header-v2 版本。但是,我们希望使用自定义标头路由到特定修订,例如“用户:v2”。我们应该做什么?我们尝试了一些方法。首先,我们尝试编辑对应的虚拟服务,但是新的规则会被自动删除。然后,我们尝试添加一个新的虚拟服务。

主机不能和前一个相同,否则不会生效。我们不想更改主机,我们只想通过自定义标头进行路由。这样做的更好方法是什么?提前致谢。