GKE外网访问配置


自部署的k8s文档中有提到

若需要在集群外访问,则需将 TiDB 服务端口暴露出去。

如果想从外部访问GKE上的TiDB,请问如何配置呢?

按照这个方法不能访问吗?

文档不是放GKE下的,就没这么尝试,跟自托管k8s一样配置就可以是吧

比自托管简单,已经有 LoadBalance ,可以直接创建堡垒机服务来访问。

访问数据库
准备一台可以访问集群的机器
我们为 TiDB 集群创建的是内网 LoadBalancer。我们可在集群 VPC 内创建一台堡垒机访问数据库。

Copy
gcloud compute instances create bastion \
  --machine-type=n1-standard-4 \
  --image-project=centos-cloud \
  --image-family=centos-7 \
  --zone=<your-region>-a
注意:

<your-region>-a 为集群所在的区域的 a 可用区,比如 us-central1-a。也可在同区域下的其他可用区创建堡垒机。

安装 MySQL 客户端并连接
待创建好堡垒机后,我们可以通过 SSH 远程连接到堡垒机,再通过 MySQL 客户端来访问 TiDB 集群。

用 SSH 连接到堡垒机:

Copy
gcloud compute ssh tidb@bastion
安装 MySQL 客户端:


sudo yum install mysql -y
连接到 TiDB 集群:


mysql -h <tidb-nlb-dnsname> -P 4000 -u root

按这个方法似乎不能外网直接访问吧?如果希望外网通过域名或者ip方式访问的话,有办法吗

通过外网访问 TiDB 服务吗?不建议这样做,这样直接对公网暴露了。

是的,外网直接暴露 TiDB 服务的地址。

如果非要这样做,可以把 TidbCluster CR 中下面配置去掉:

      annotations:
        cloud.google.com/load-balancer-type: Internal

这样会从内部 LB 改成外部 LB,但是就直接暴露到外网了。