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
云功能-连接到Kubernetes容器_Kubernetes_Google Cloud Platform_Google Cloud Functions_Google Kubernetes Engine_Gke Networking - Fatal编程技术网

云功能-连接到Kubernetes容器

云功能-连接到Kubernetes容器,kubernetes,google-cloud-platform,google-cloud-functions,google-kubernetes-engine,gke-networking,Kubernetes,Google Cloud Platform,Google Cloud Functions,Google Kubernetes Engine,Gke Networking,我想从Google云函数连接到Kubernetes GKE容器。具体来说,容器有postgres数据库,我想读取表中的记录 在戈兰: func ConnectPostgres(w http.ResponseWriter, r *http.Request) { db, err := sql.Open("postgres", "postgresql://postgres@10.32.0.142:5432/myDatabase") if err != nil { h

我想从Google云函数连接到Kubernetes GKE容器。具体来说,容器有postgres数据库,我想读取表中的记录

在戈兰:

func ConnectPostgres(w http.ResponseWriter, r *http.Request) {

    db, err := sql.Open("postgres", "postgresql://postgres@10.32.0.142:5432/myDatabase")

    if err != nil {
        http.Error(w, "Error opening conn:" + err.Error(), http.StatusInternalServerError)
    }
    defer db.Close()

    err = db.Ping()
    if err != nil {
        http.Error(w, "Error ping conn:" + err.Error(), http.StatusInternalServerError)
    }

    rows, err := db.Query("SELECT * FROM myTable")

    fmt.Println(rows)

    w.Write([]byte(rows))
}
10.32.0.142是具有容器的吊舱的内部IP

但是当云函数尝试Ping到postgres容器时,请求超时


如何解决这个问题?

您需要先将云功能连接到VPC,详细说明如下:

要从云功能从内部网络连接到GKE容器,正如@Cloud Ace提到的,您必须这样做

否则,如果您不想处理连接器,您可以通过LB或节点的公共ip地址连接到GKE集群上的服务

在这两种情况下,您都必须创建服务,并将5432端口暴露到kubernetes集群之外。您不能直接使用pod ip地址

如果您在内部使用vpc连接器,您可以使用和使用节点的内部ip地址

但是,如果您不使用vpc连接器,请同时键入:NodePort服务将使用节点的外部/公共ip地址,您还必须为节点添加

所以我建议对您的postgres端点使用类型服务,因为它将在GCP上使用公共ip地址创建负载平衡器,并将在GCP上自动创建所有转发和防火墙规则


希望有帮助

当我尝试创建VPC连接器时,我总是会遇到错误:连接器处于不良状态,建议手动删除。我尝试了各种未使用的IP范围。在示例中,它是10.182.0.0/28 testvpc网络的IP范围是10.32.0.0/14,这是我们的群集IP范围。