GO学习笔记 | golang数据源访问k8s内部数据库连接时产生的问题
golang数据源访问k8s内部数据库连接时产生的问题
背景
- 集群:Docker Desktop 内置 K8s(新版内部使用 kind),配置的是LoadBalancer,并不是NodePort
- MySQL Service 在 K8s 内正常 Running,后端写数据正常
- 问题:GoLand ide数据源连不上
localhost:11309
根因
新版 Docker Desktop K8s 改用 kind,LoadBalancer 类型无法分配 External-IP(一直 <pending>),所以 localhost:11309 不可达。旧版可以直连,新版必须走其他方式。
可行方案
解决方法:port-forward(推荐)
笔者亲测可行
1 | kubectl port-forward service/webook-mysql 13309:11309 |
- GoLand 配
localhost:13309 - 终端保持开启,关闭后连接即断
- 可用脚本放到后台或开机自启,减少手动操作
NodePort 直连
这是笔者了解到的另外一种方法,但是没有成功,也觉得这个每次电脑重启啥的都得去专门查一下ip,有点麻烦,大家也可以自行尝试一下
- 将 Service 类型改为 NodePort(端口范围 30000~32767)
- 查看 NodePort:
kubectl get svc webook-mysql - 查看 kind 节点 IP:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' desktop-control-plane - GoLand 配
IP:NodePort - 注意:kind 节点 IP 重启后会变化
注:
这个问题不会影响k8s里面webook的正常使用,golang ide数据源连接mysql还是为了查看一些数据方便一些,也可以用sqlyog等工具
1 | webook Pod(后端代码)→ MySQL Service(集群内部)→ MySQL Pod |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Darlingの妙妙屋!
评论









