问题标签 [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.
apache-flink - 如何在 K8s 上自动扩展/缩减 Flink 有状态函数
我当前的 Flink 应用程序
- 基于 Flink Stateful Function 3.1.1,从 Kafka 读取消息,处理消息,然后下沉到 Kafka Egress
- 应用程序已按照指南部署在 K8s 上并且运行良好:Stateful Functions Deployment
- 基于标准部署,我开启了kubernetes HA
我的目标
我想自动扩大/缩小有状态的功能。我也想知道如何创建更多的备用作业管理器
我对医管局的观察
我尝试kubernetes.jobmanager.replicas
在flink-config
ConfigMap 中设置:
我在 K8s 中没有看到备用作业管理器。
然后我直接调整deployment的replicas:
备用作业经理出现。我查看 pod 日志,leader 选举成功。但是,当我在 Web 浏览器中访问 UI 时,它会显示:
我的方法有什么问题?
我关于缩放的问题
反应模式正是我所需要的。我试过但失败了,作业管理器有错误消息:
似乎不应该以这种方式完成有状态功能自动缩放。那么进行自动缩放的正确方法是什么?
潜在方法(可能不正确)
经过一番研究,我目前的方向是:
- Job Manger 与自动缩放无关。它与 K8s 上的 HA 有关。我只需要确保 Job Manager 具有正确的故障转移行为
- 我的有状态功能是
Flink remote services
,即它们是常规的k8s services
。它们可以以 的形式部署KNative service
以实现自动缩放。只有当 http 请求来自 Flink 的 worker 时,服务的副本才会增加 - 最重要的部分,Flink 的工人(或任务管理器)我还不知道如何进行自动缩放。也许我应该
KNative
用来部署 Flink 工作者?如果它不适用于 KNative,也许我应该完全改变 flink 运行时部署。例如,尝试原始的响应式演示。但恐怕 Stateuful 函数不打算那样工作。
最后
我一遍又一遍地阅读 Flink 文档和 Github 示例,但找不到更多信息来执行此操作。任何提示/说明/指南表示赞赏!
authorization - 在 Istio-knative 服务 + 外部请求中保护 mTLS 通信
我们正在将现有的 k8s 服务转换为使用 istio 和 knative。这些服务接收来自外部用户以及集群内部的请求。我们正在尝试设置 IstioAuthorizationPolicy
以实现以下要求:
- 某些路径(如 docs/healthchecks)不需要任何特殊的标头或任何东西,并且必须可以从任何地方访问
- knative 需要访问的健康和指标收集路径必须只能由 knative 控制器访问
- 来自集群外部的任何请求(
knative-serving/knative-ingress-gateway
基本上通过)必须包含与预共享密钥匹配的密钥标头 - 来自集群内任何服务的任何请求都可以访问所有路径
以下是我正在尝试的示例。我能够满足前 3 个要求,但不能满足最后一个要求...
我们没有对 istio-knative 设置默认提供的 mTLS 配置进行任何更改,因此假设当前 mtls 模式为PERMISSIVE
.
涉及的技术堆栈的详细信息
- AWS EKS - 版本 1.21
- Knative Serving - 1.1 版(使用 Istio 1.11.5)
istio - 什么是 knative 的“网状”网关
我看到对于每个 knative 服务,VirtualService
创建了 2 个对象,即配置ksvc-ingress
了knative-serving/knative-ingress-gateway
&knative-serving/knative-local-gateway
网关,以及ksvc-mesh
作为mesh
网关。
我可以看到knative-serving/*
网关正在使用kubectl
,但我无法mesh
在任何命名空间中找到网关对象。我想了解mesh
这里是否表示一些特殊对象,或者它是表示其他东西的 istio 关键字?
kubernetes - Knative 服务 URL
我目前正在评估 Knative,但我肯定找不到在 URL 中使用路径而不是子域来访问服务的方法。
默认情况下,在创建服务时,URL 是这样的:http://Name.Namespace.Domain我想要的是这样的 http://Domain/Namespace/Name
有人知道这是否可能吗?提前致谢,
塞德里克