【问题标题】:How to use Serverless VPC access for Cloud functions如何使用无服务器 VPC 访问云功能
【发布时间】:2019-04-20 20:27:30
【问题描述】:

我已经创建了一个带有示例 Spring Boot 应用程序的 Kubernetes 集群,它在公共 IP 上运行良好。现在我想在 Kubernetes 集群中访问 Spring Boot 的端点。我已经按照 Google 的配置无服务器 VPC 访问的教程进行操作。 (https://cloud.google.com/vpc/docs/configure-serverless-vpc-access?hl=bg)。我已经创建了无服务器 VPC 访问并用于其中一项云功能。

现在我的问题是,如何从我的云功能连接 Kubernetes 集群的内部 ip?我已经用 Go 编写了代码。

package p

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func HelloWorld(w http.ResponseWriter, r *http.Request) {
    fmt.Println("Starting the application...")

    response, err := http.Get("http://10.59.247.177:47002/")
    if err != nil {
        fmt.Fprint(w, "The HTTP request failed with error %s\n", err)
    } else {
        data, _ := ioutil.ReadAll(response.Body)
        fmt.Fprint(w, string(data))
    }
}

但我收到错误消息:HTTP 请求失败,错误为 %s 获取http://10.59.247.177:47002/: 拨号 tcp 10.59.247.177:47002: i/o timeout

【问题讨论】:

    标签: kubernetes google-cloud-platform google-cloud-functions serverless


    【解决方案1】:

    默认情况下,Kubernetes 服务在 Kubernetes 集群内部。您必须公开服务,以便 Kubernetes 外部的应用程序可以连接到它。

    在 Kubernetes 中暴露服务主要有 3 种方式:

    1. 公共负载平衡器。服务暴露于互联网。
    2. 内部负载平衡器。服务在 VPC 和区域内部公开。
    3. 节点端口。服务在一些高数端口上的 Kube 节点 IP 地址上公开。这使得服务在 VPC 内部和区域之间可见。

    在此处阅读更多信息 https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types 和此处 https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer

    【讨论】:

    • 感谢您的回答。实际上,我已经设置了公共负载均衡器,它工作正常。我在云功能中尝试了该公共 IP。它也有效。我会试试内部负载均衡器。
    • 我在您的个人资料中看到您使用的是 openstack。我如何使用 openstack 作为 kubernetes 的负载均衡器?你用magnum还是zun?我的openstack太慢了我该怎么办?不好意思在这里问,但这对我很重要。我很高兴收到你的电子邮件。你能把它添加到你的个人资料中吗?
    • 我遵循了创建内部负载平衡的指南。 (cloud.google.com/files/…)。但是我的负载均衡器总是不健康。如何创建正确的并在云功能中连接?没有其他可用的指南或教程
    • 您应该按照以下步骤操作:cloud.google.com/kubernetes-engine/docs/how-to/…
    猜你喜欢
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2014-04-04
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多