【问题标题】:KNative with Istio Listening on Port 8080KNative 与 Istio 在端口 8080 上侦听
【发布时间】:2020-12-06 02:04:29
【问题描述】:

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

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

【问题讨论】:

  • 您问的是用户容器,还是 Knative 集群的常见 HTTP 入口?
  • 入口网关的端口与运行用户容器的端口无关——Envoy(由 Istio 使用)将很乐意在不同端口上使用后端。

标签: knative knative-serving


【解决方案1】:

如果您有一个现有的容器侦听端口 80 而不是 $PORT,您可以设置 spec.template.spec.containers[0].ports[0].containerPort 以指示容器侦听的端口。

例如:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
 name: helloworld-go
 namespace: default
spec:
 template:
  spec:
   containers:
    - image: gcr.io/knative-samples/helloworld-go
      env:
      - name: TARGET
       value: "Go Sample v1"
      ports:
      - containerPort: 80

Knative 会自动将 $PORT 环境变量设置为请求的容器端口,因此设置 containerPort 应该适用于任何 Knative 示例。

【讨论】:

  • 我做了一些实验,试图在 Yaml 中设置 PORT,knative api 被拒绝,我认为这是预期的行为。
  • 需要设置containerPort,Knative会自动设置环境变量。
【解决方案2】:

如果我理解这个问题,这类似于我在尝试在非标准端口上使用 Istio 入口网关配置 Knative 时遇到的问题。按照 Istio 集成的 Knative 说明,我应用了 Knative Istio 控制器(net-istio)。这包括选择 istio: ingressgateway 指定端口 80 的 networking.istio.io Gateway。将此资源修改为正确的端口(问题中为 8080)应该可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2021-05-28
    • 1970-01-01
    • 2018-11-05
    • 2019-01-03
    • 2017-05-05
    • 1970-01-01
    相关资源
    最近更新 更多