我正在使用庫伯內特斯。我有兩個豆莢。在一個容器中,它正在運行一臺服務器。這是嘗試在另一個容器中連接PostgreSQL服務的代碼部分。import ( "context" "github.com/jackc/pgx/v4/pgxpool" "github.com/rs/zerolog/log")databaseURL := "postgres://admin:[email protected]:40072/my_db"pg, err := pgxpool.Connect(context.Background(), databaseURL)if err != nil { log.Error().Err(err).Msg("conn.Close") return nil}目前,上面的代碼給出了錯誤{“級別”:“錯誤”,“錯誤”:“無法連接到:撥號錯誤(撥打 tcp 10.43.140.140:40072:連接:連接被拒絕)”,“時間”:1627849943,“消息”:“conn.關閉“}host=my-database-service.hm user=admin database=my_db但是,在我ssh進入服務器容器后,我可以通過 成功連接PostgreSQL容器。psql/usr/src/app # psql --host=my-database-service.hm --port=40072 --dbname=my_db --username=admin --passwordPassword: psql (13.3)Type "help" for help.my_db=# 我試圖重新啟動我的服務器容器,以確保它在PostgreSQL數據庫準備就緒后運行,但仍然得到同樣的錯誤。任何進一步調試的建議都會有所幫助。謝謝!更新我實際上是在使用林克德??赡芘chttps://linkerd.io/2.10/features/protocol-detection/我嘗試將 PostgreSQL 更改為默認端口 5432,但仍有問題。如果找到解決方案,將更新。
1 回答
一只萌萌小番薯
TA貢獻1795條經驗 獲得超7個贊
經過一些實驗,我可以確認我的問題與Linkerd無關。
我認為我的 PostgreSQL 容器端口/目標端口仍在使用默認的 5432。它通過端口40072在網絡內部的TosterIP公開,這就是為什么我不需要在Linkerd中將端口標記為不透明。
事實證明,添加后,os.Exit(1)
pg, err := pgxpool.Connect(context.Background(), databaseURL)
if err != nil {
log.Error().Err(err).Msg("conn.Close")
os.Exit(1) // <- this helps
}
我的 Kubernetes 將幫助重新啟動服務器 pod,當它最初失敗等待 PostgreSQL 準備就緒。
重新啟動幾次后,服務器容器現在可以很好地連接 PostgreSQL。
我認為如果我提前手動重新啟動更多次,也可能有所幫助。但絕對不可靠,像這樣讓庫伯內特斯幫助重啟。
- 1 回答
- 0 關注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消
