仅可通过堡垒Pod访问云数据库时如何使用本地数据库客户端连接
本地MySQL Workbench连接内网RDS操作方案
核心逻辑是通过kubectl建立本地到堡垒Pod的网络通道,再通过堡垒Pod转发流量到内网RDS,无需暴露RDS到公网。
前置校验
- 本地
kubectl已配置对应K8s集群的访问凭证,可正常执行kubectl exec进入堡垒Pod - 堡垒Pod所属网络可访问RDS的MySQL端口(默认3306,自定义端口自行替换),可先执行
kubectl exec <堡垒Pod名称> -- telnet <RDS内网地址> 3306验证连通性 - 本地已安装MySQL Workbench
建立端口转发通道
根据你的kubectl版本和堡垒Pod环境选以下任一方式即可:
方式1(全版本兼容)
要求堡垒Pod内已安装socat(无socat可进入Pod后通过apt install socat/yum install socat安装)
- 本地终端执行命令,在堡垒Pod内启动流量转发:
kubectl exec <堡垒Pod名称> -- socat TCP-LISTEN:3306,fork TCP:<RDS内网地址>:3306 & - 继续执行命令建立本地端口到堡垒Pod的映射:
命令执行后保持终端前台运行,关闭终端则转发通道断开。# 本地3306端口被占用的话,可替换为其他空闲端口,比如3307:3306 kubectl port-forward <堡垒Pod名称> 3306:3306
方式2(kubectl 1.30+版本支持)
高版本kubectl支持直接通过Pod转发流量到集群外地址,无需Pod安装额外工具,直接执行以下命令即可:
# 本地端口可自行替换为空闲端口 kubectl port-forward pod/<堡垒Pod名称> 3306:<RDS内网地址>:3306
配置MySQL Workbench连接
打开MySQL Workbench新建连接,填写以下参数:
- 连接方式:选择
Standard (TCP/IP) - Hostname:填写
127.0.0.1 - Port:填写上一步你设置的本地转发端口,默认3306,自定义的话对应修改
- Username:填写RDS的MySQL授权账号
- Password:填写对应账号的密码,可点击保存避免重复输入
- Default Schema:可选,填写默认访问的数据库名
填写完成后点击Test Connection验证连通性,验证通过即可保存连接正常使用。
常见问题排查
- 连接失败首先检查转发命令所在终端是否正常运行,无报错输出
- 确认RDS的安全组规则已放通堡垒Pod所属网段的3306端口访问权限
- 确认K8s集群未配置网络策略限制堡垒Pod访问RDS地址
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

