如何将无服务器VPC访问用于云功能

时间:2019-04-20 20:27:30

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

我已经用示例Spring Boot应用程序创建了一个Kubernetes集群,它在公共ip上运行良好。现在,我想访问Kubernetes集群中Spring引导的终点。我已经按照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:输入/输出超时

1 个答案:

答案 0 :(得分:1)

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

在Kubernetes中公开服务的主要方式有3种:

  1. 公共负载均衡器。服务已暴露给Internet。
  2. 内部负载均衡器。服务在VPC和区域内部公开。
  3. NodePort。服务在某个高编号端口上的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

了解更多