You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过OCI LoadBalancer将OKE上的MySQL InnoDB集群暴露至公网?

借助OCI LoadBalancer暴露OKE上的MySQL InnoDB集群至公网

前提说明

  • MySQL InnoDB集群由MySQL Operator通过Helm部署,Pod监听6446(MySQL X协议)和6447(经典MySQL协议)端口
  • 当前可通过ClusterIP+exec命令连接Pod,OKE集群运行正常

具体实现步骤

1. 创建LoadBalancer类型的Service

通过Kubernetes YAML配置文件创建LoadBalancer Service,关联MySQL集群Pod:

创建mysql-lb-service.yaml文件,替换占位符为实际信息:

apiVersion: v1
kind: Service
metadata:
  name: mysql-innodb-cluster-lb
  namespace: <你的集群命名空间>  # 比如默认的mysql-operator
spec:
  type: LoadBalancer
  ports:
    - name: mysql-classic
      port: 3306  # 公网访问的经典协议端口,可自定义
      targetPort: 6447  # 对应Pod的经典协议监听端口
      protocol: TCP
    - name: mysql-x
      port: 33060  # 公网访问的X协议端口,可自定义
      targetPort: 6446  # 对应Pod的X协议监听端口
      protocol: TCP
  selector:
    mysql.oracle.com/cluster: <你的MySQL集群名称>  # 替换为实际集群名称

2. 部署Service配置

执行命令应用该Service:

kubectl apply -f mysql-lb-service.yaml

3. 获取LoadBalancer公网IP

执行命令查看Service状态,等待OCI分配公网IP:

kubectl get service mysql-innodb-cluster-lb -n <你的命名空间>

当EXTERNAL-IP列显示公网IP时,说明配置生效。

4. 配置OCI安全组规则

登录OCI控制台,为OKE集群节点所在安全组添加入站规则:

  • 进入网络 > 安全列表,找到目标安全组
  • 添加两条规则:
    • 协议:TCP,源:按需设置(建议指定信任IP范围,而非0.0.0.0/0),端口范围:3306
    • 协议:TCP,源:同上述范围,端口范围:33060
  • 保存规则,确保流量能到达LoadBalancer

5. 测试公网连接

使用MySQL客户端测试经典协议连接:

mysql -h <LoadBalancer公网IP> -P 3306 -u <用户名> -p

或测试X协议连接:

mysqlsh --uri <用户名>@<LoadBalancer公网IP>:33060

注意事项

  • 公网暴露数据库存在安全风险,严格限制访问源IP,避免开放全量公网访问
  • 确保MySQL用户权限允许从公网IP连接(例如创建用户时指定'username'@'%')
  • 如需固定公网IP,可在OCI申请预留公网IP,然后在Service的metadata.annotations中添加oci.oracle.com/load-balancer-public-ip: <预留IP>

内容的提问来源于stack exchange,提问作者ZZzzZZzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 00:32:09