0

我想在不执行 curl 命令的情况下第一次访问浏览器,注意 - 初始命令(如导出 IP 地址和 config-map 命令)执行成功。

apiVersion: serving.knative.dev/v1alpha1 
kind: Service
metadata:
  name: helloworld-go # The name of the app
  namespace: default # The namespace the app will use
spec:
  runLatest:
    configuration:
      revisionTemplate:
        spec:
          container:
            image: gcr.io/knative-samples/helloworld-go 
            env:
              - name: TARGET 
                value: "Go Sample v1"

我没有收到任何错误。我的期望是当我使用浏览器请求我的 URL 时,我的 pod 想要自动创建。

4

1 回答 1

0

使用 Knative 时,建议您的所有请求都通过 Ingress Gateway 路由,因此您确保使用 Knative 提供的其他功能,例如自动缩放(如果 pod 缩小到 0)

下面的 Kubernetes Service 仅用作收集正在运行的 pod 的所有端点的机制。如果没有正在运行的 pod,则它无法扩展,并且在没有后端时将返回默认响应。

您遇到的问题正是这个,使用 Kubernetes 服务没有运行 pod。您需要使用 Ingress 网关。为此,请执行以下命令来获取其 IP:

kubectl get svc -n istio-system \
  -l app=istio-ingressgateway \
  -o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}'

并在浏览器中使用此 IP。您将面临的直接问题是入口网关路由基于标头并且您缺少标头。出于这个原因,安装一个 chrome 扩展,在请求中添加标头(我使用 ModHeader)。

在您的 chrome 扩展中添加标头(在您的情况下为“主机:helloworld.default.example.com”)打开 IP 后,即使它已关闭,您也将到达您的 pod。

于 2019-10-25T10:20:26.290 回答