【发布时间】:2020-11-05 07:05:22
【问题描述】:
我正在为我的网站创建上传文件功能。当用户点击上传时,我的网页将调用 API,该 API 具有将文件上传到我的 Kubernetes 上的 minIO 节点并将该文件的元数据存储到我的 Kubernetes 上的 cockroachDB 节点的功能
问题是当我在本地环境中测试它时它工作正常:
- (网址:
http://localhost:5000,API 网址:http://localhost:8080/upload)
但是当我创建 pod 并在 Kubernetes 上运行它时会导致错误 [503 service unavailable]
- (网址:
https://[myWebName].com,API 网址:https://[myWebName].com/upload)
在我尝试调试此问题后,我知道问题的原因是我用于将数据插入 cockroachDB 的代码,但我不知道如何解决此问题,也不知道为什么它在我的本地环境,但是当它上传到 Kubernetes 时,这个函数会导致错误。
导致问题的函数:
func cockroachUpload(data Workspace ,w http.ResponseWriter){
//Work Fine
db, err := sql.Open("postgres",
"postgresql://root@128.199.248.147:31037/goliath?ssl=true&sslmode=require&sslrootcert=certs/ca.crt&sslkey=certs/client.root.key&sslcert=certs/client.root.crt")
if err != nil {
w.Write([]byte(err.Error()))
log.Fatal("error connecting to the database: ", err)
}
defer db.Close()
//cause error
query:="INSERT INTO workspace(name,permission) VALUES ($1,$2)"
rows, err := db.Query(query,"test",true)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
fmt.Println("done workspace")
}
PS:我使用 nodeport 连接到我的 Kubernetes 上的 minIO 和 CockroachDB 服务。
【问题讨论】:
-
您能在某处分享您的 Kubernetes 清单吗?你能分享运行你的工作负载的 Pod 的日志吗?
kubectl logs <pod-name>。谢谢 -
easy cake pal...您的 docker 容器不包含证书,并且永远不会上传文件。在本地你可以这样做..但是在集群容器上必须生成证书;)当使用缩小的 docker 镜像 sich 作为 alpine 等时会发生这种情况。这可以在你的 dockerfile 上解决...
标签: kubernetes https cockroachdb