云功能-连接到Kubernetes容器
我想从Google云函数连接到Kubernetes GKE容器。具体来说,容器有postgres数据库,我想读取表中的记录 在戈兰:云功能-连接到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
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范围。