![](/img/trans.png)
[英]Spring boot service is not connecting to mysql DB service inside kubernetes of GKE
[英]Connecting to external mysql db from nodejs GKE pod
我有一個nodejs express應用程序,它使用以下命令連接到mysql數據庫:
const dbconfig = {
client: 'mysql',
connection: {
host: config.db.host,
user: config.db.user,
password: config.db.password,
database: config.db.database,
port: config.db.port,
charset: 'utf8',
ssl: {
ca: fs.readFileSync(__dirname + '/root_ca.pem')
}
}
}
在我的本地docker env中,此連接成功,但是將其部署到kube群集時,我無法連接至host:port。
VPC設置為允許該主機/端口上的入口/出口流量。
並且還設置了服務和端點:
kind: "Service"
apiVersion: "v1"
metadata:
name: "mysql"
spec:
ports:
- name: "mysql"
protocol: "TCP"
port: 13306
nodePort: 0
selector: {}
---
kind: "Endpoints"
apiVersion: "v1"
metadata:
name: "mysql"
subsets:
- addresses:
- ip: "34.201.17.84"
ports:
- port: 13306
name: "mysql"
更新:仍然沒有運氣,但是更多信息表明,吊艙和節點無法到達主機。
因此,借助Google支持,我得以找到解決問題的方法。 問題是,列入白名單以連接到數據庫的IP地址不是負載均衡器的IP地址。 因為負載平衡器是用於入口流量,而不是出口流量。
解決方法是創建一個私有群集,然后使用Google Cloud NAT服務通過單個ip(或ip范圍)路由該群集的出口流量。 一旦完成,我就可以成功連接到數據庫,而無需額外的端點/ mysql服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.