Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 后端是否';是否需要在端点openapi.yaml文件中声明s readinessProbe路径?_Google Cloud Platform_Google Kubernetes Engine_Google Cloud Endpoints_Google Cloud Networking - Fatal编程技术网

Google cloud platform 后端是否';是否需要在端点openapi.yaml文件中声明s readinessProbe路径?

Google cloud platform 后端是否';是否需要在端点openapi.yaml文件中声明s readinessProbe路径?,google-cloud-platform,google-kubernetes-engine,google-cloud-endpoints,google-cloud-networking,Google Cloud Platform,Google Kubernetes Engine,Google Cloud Endpoints,Google Cloud Networking,我正在部署一个项目,它是一个GKE容器后端,前端有一个CloudEndpoints API。它通过入口和节点端口服务。我已在ESP容器上声明准备就绪探测: readinessProbe: httpGet: path: /ping port: 8080 但是我注意到/ping路径必须在openapi.yaml中声明,而不使用任何安全性,否则它将返回404,如果使用某种安全性定义声明,则返回401 这是预期的吗?我

我正在部署一个项目,它是一个GKE容器后端,前端有一个CloudEndpoints API。它通过入口和节点端口服务。我已在ESP容器上声明准备就绪探测:

        readinessProbe:
          httpGet:
            path: /ping
            port: 8080
但是我注意到/ping路径必须在openapi.yaml中声明,而不使用任何安全性,否则它将返回404,如果使用某种安全性定义声明,则返回401

这是预期的吗?我在端点示例repo中没有看到任何相关内容:


在仔细检查文档和代码示例后,我发现ESP有一个
healthz
参数:

    spec:
      containers:
      - name: esp
        image: gcr.io/endpoints-release/endpoints-runtime:1
        args: [
          "-p", "8080",
          "-a", "127.0.0.1:8081",
          "-s", "SERVICE_NAME",
          "--rollout_strategy", "managed",
          "-z", "healthz",
        ]
        readinessProbe:
          httpGet:
            path: /healthz
            port: 8080
        ports:
          - containerPort: 8080
()

为ESP指定healthz参数时,它将nginx配置为仅为该路径返回200:

% if healthz:
    location = /${healthz} {
      return 200;
      access_log off;
    }
% endif
()

因此,谷歌似乎希望您只对ESP容器进行运行状况检查,而不是后端


这回答了我最初的问题,尽管它仍然引出了第二个问题,那就是:为什么不检查后端的运行状况?

在更仔细地检查文档和代码示例后,我发现ESP有一个
healthz
参数:

    spec:
      containers:
      - name: esp
        image: gcr.io/endpoints-release/endpoints-runtime:1
        args: [
          "-p", "8080",
          "-a", "127.0.0.1:8081",
          "-s", "SERVICE_NAME",
          "--rollout_strategy", "managed",
          "-z", "healthz",
        ]
        readinessProbe:
          httpGet:
            path: /healthz
            port: 8080
        ports:
          - containerPort: 8080
()

为ESP指定healthz参数时,它将nginx配置为仅为该路径返回200:

% if healthz:
    location = /${healthz} {
      return 200;
      access_log off;
    }
% endif
()

因此,谷歌似乎希望您只对ESP容器进行运行状况检查,而不是后端

这回答了我最初的问题,尽管它仍然引出了第二个问题,那就是:为什么不对后端进行健康检查?

我假设术语“后端”指的是集群的节点或GKE运行的POD。对于这两种情况,GKE都是自我管理的,节点和POD的健康状况由主节点监控,以便它们始终可用。有关这方面的更多信息,请参阅和

在此上下文中,用于GKE入口的健康检查不检查后端,而是检查集群中运行的服务。为了检查这些服务是否正常,如本文所述使用就绪性和活动性探测。

我假设术语“后端”是指集群的节点或GKE运行的POD。对于这两种情况,GKE都是自我管理的,节点和POD的健康状况由主节点监控,以便它们始终可用。有关这方面的更多信息,请参阅和


在此上下文中,用于GKE入口的健康检查不检查后端,而是检查集群中运行的服务。要检查这些服务是否正常,请使用准备就绪和活动性探测,如本文所述。

如果要对后端进行运行状况检查,需要在openapi配置中列出运行状况检查路径,以便ESP转发。

如果要对后端进行运行状况检查,您需要在openapi配置中列出运行状况检查路径,以便ESP转发它。

我也遇到了同样的问题,但似乎可以在GCE侧车和最终后端(例如,您实际构建的api)上进行运行状况检查

诀窍是,必须将api的healthcheck配置为云端点容器(而不是api容器)上的readinessprobe。您检查的端点也必须没有针对它的安全性,因此它是可公开访问的(尽管您似乎还可以使用api密钥配置健康检查)

我遵循前面的建议,还向esp容器添加了“healthz”参数。My API正在端口80上运行,未受保护的状态终结点位于
/API/status

spec:
  containers:
  - name: esp
    image: gcr.io/endpoints-release/endpoints-runtime:1
    args: [
      "--http_port=8081",
      "--backend=127.0.0.1:80",
      "--service=MY SERVICE",
      "--rollout_strategy=managed",
      "-z", "healthz",
    ]
    ports:
    - containerPort: 8081
    readinessProbe:
      httpGet:
        path: /api/status/
        port: 8081
  - name: api
    image: MY IMAGE
    ports:
      - containerPort: 80

这起作用了,所以check现在正在验证两个容器是否都使用一个
readinessProbe
运行。有趣的是,当我检查LoadBalancer时,它还根据
/healthz
配置了一个负载平衡器,而这是以前没有的。这将有助于诊断端点容器正常工作的情况,但该api不是

我遇到了相同的问题,但似乎可以对GCE侧车和最终后端(例如,您实际构建的api)进行健康检查

诀窍是,必须将api的healthcheck配置为云端点容器(而不是api容器)上的readinessprobe。您检查的端点也必须没有针对它的安全性,因此它是可公开访问的(尽管您似乎还可以使用api密钥配置健康检查)

我遵循前面的建议,还向esp容器添加了“healthz”参数。My API正在端口80上运行,未受保护的状态终结点位于
/API/status

spec:
  containers:
  - name: esp
    image: gcr.io/endpoints-release/endpoints-runtime:1
    args: [
      "--http_port=8081",
      "--backend=127.0.0.1:80",
      "--service=MY SERVICE",
      "--rollout_strategy=managed",
      "-z", "healthz",
    ]
    ports:
    - containerPort: 8081
    readinessProbe:
      httpGet:
        path: /api/status/
        port: 8081
  - name: api
    image: MY IMAGE
    ports:
      - containerPort: 80

这起作用了,所以check现在正在验证两个容器是否都使用一个
readinessProbe
运行。有趣的是,当我检查LoadBalancer时,它还根据
/healthz
配置了一个负载平衡器,而这是以前没有的。这将有助于诊断端点容器工作的情况,但api不是

“后端”是云端点文档用来指为api后端提供服务的容器的术语。ESP容器是其侧车。关于让readinessProbe只检查ESP容器的运行状况,我担心的是,如果后端容器不正常,ESP容器将继续尝试向其发送请求,而不是立即失败。GKE中的API后端依赖于一个不正常的。这些都是谷歌管理的服务,用户不应该关心其健康状况。“后端”是云端点文档用来指为api后端服务的容器的术语。ESP容器是其侧车。关于让readinessProbe只检查ESP容器的健康状况,我担心的是,如果后端容器不健康,ESP容器将继续尝试向其发送请求,而不是立即失败。GKE中的API后端依赖于whic