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

如何通过GCP Kubernetes集群从指定公网IP访问MariaDB 3306端口

解决方案:将MariaDB端口开放给特定公网IP

我来帮你一步步搞定这个问题——要让你的桌面静态IP能访问K8s集群里的MariaDB,需要先通过Kubernetes Service暴露端口,再结合GCP的防火墙规则做访问限制,具体步骤如下:

1. 创建Kubernetes Service暴露MariaDB端口

你的Deployment已经正常运行,但Pod的端口还没对外暴露,得先创建一个Service来打通外部访问的通道。新建一个mariadb-service.yaml文件,内容如下:

apiVersion: v1
kind: Service
metadata:
  name: mariadb-service
spec:
  type: LoadBalancer
  selector:
    app: mariadb  # 必须和Deployment里的Pod标签完全匹配
  ports:
    - protocol: TCP
      port: 3306        # 外部访问时用的端口
      targetPort: 3306  # 对应Pod内部的MariaDB端口

执行命令应用这个Service:

kubectl apply -f mariadb-service.yaml

等待1-2分钟让GCP分配外部负载均衡IP,用下面的命令查看状态:

kubectl get service mariadb-service

当EXTERNAL-IP列显示出一个公网IP时,就可以进入下一步了。

2. 在GCP配置防火墙规则限制访问

为了避免端口被无关IP访问,需要在GCP里设置防火墙规则,仅允许你的桌面静态IP访问3306端口:

  1. 打开Google Cloud控制台,进入VPC网络 > 防火墙页面
  2. 点击创建防火墙规则,填写以下信息:
    • 名称:比如allow-mariadb-from-my-static-ip
    • 网络:选择你的K8s集群所在的VPC(通常是default)
    • 优先级:设为1000(比默认规则优先级高即可)
    • 方向:入站
    • 目标:选择指定的目标标签,输入你K8s集群节点的标签(可以在GCE实例页面查看,一般是kubernetes-node)
    • 源IP范围:填写你的桌面静态IP,格式为X.X.X.X/32(比如114.114.114.114/32)
    • 协议和端口:选择指定的协议和端口,勾选tcp并填写3306
  3. 点击创建完成规则配置

3. 测试连接

现在用桌面的MariaDB客户端尝试连接:

mysql -h <刚才获取的EXTERNAL-IP> -u <你Deployment里设置的USER> -p

输入你配置的密码,就能成功连接到集群里的MariaDB了。

额外提示

  • 如果你不想用LoadBalancer类型的Service,也可以选择NodePort类型(会分配30000-32767之间的端口),此时防火墙规则里的端口要改成这个NodePort,源IP限制保持不变。
  • 确认你Deployment里的<USER>和<PASSWORD>已经替换成实际的账号密码,避免连接失败。
  • 你的K8s版本是1.8.6,上述YAML的apiVersion完全兼容,无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:01:03