请问如何使用外部独立spark集群访问在k8s上的tiflash/tikv?

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
k8s
【概述】场景+问题概述
tiflash使用的3930端口以及tikv使用的20160端口是ClusterIP类型,外部的spark集群无法访问,请问如何使用spark访问在k8s上的tiflash

NAME                             TYPE           
service/c127a-discovery          ClusterIP      
service/c127a-pd                 NodePort       
service/c127a-pd-peer            ClusterIP      
service/c127a-tidb               LoadBalancer   
service/c127a-tidb-peer          ClusterIP      
service/c127a-tiflash-peer       ClusterIP      
service/c127a-tikv-peer          ClusterIP        

【背景】做过哪些操作
【现象】业务和数据库现象
spark无法访问tiflash
【业务影响】
需要从外部访问tiflash
【TiDB 版本】
v4.0.12
【附件】

  1. TiUP Cluster Display 信息

  2. TiUP Cluster Edit Config 信息

  3. TiDB- Overview 监控

  • 对应模块日志(包含问题前后1小时日志)
2赞

修改配置 使用Nodeport

1赞

请问如何改为nodeport?好像没有在tiflash和tikv下面找到配置service的地方,只有pd和tidb可以配置service

1赞
service:
  type: NodePort

直接在配置文件加上试一下

1赞

如果我记得没错的话,crd中只有pd和tidb部分可以配置service,tikv和tiflash没有这个配置项
@DanielZhangQD 如果tidb operator可以配置tiflash/tikv peer service type,是否能支持这个feature?

1赞

https://docs.pingcap.com/zh/tidb-in-kubernetes/stable/faq/#tidb-operator-支持-tispark-吗 k8s 集群外的 spark 不支持访问 tiflash/tikv。
另外,Spark 不会通过 service 访问 TiKV,肯定是通过 Pod 域名访问某个 TiKV,所以集群外除了要和集群内 Pod 网络打通,还要能解析 Pod 域名,这两个条件可以和贵司 k8s team 或者 infra team 确认是否能走通。

1赞

你提的这个问题,可能实现不了,因为spark从pd获取的tikv地址,是k8s的内部映射地址,外部不可能找到,替代方案是,spark也直接运行在k8s中,这样就没问题了

1赞

新写了个帖子,https://asktug.com/t/topic/422775,跑了一个demo是tispark on k8s的,希望对你有所帮助。