数据小黑
(数据小黑)
1
环境信息:
TiDB 6.0 on k8s
DM 6.0 on k8s
TiDB由5.4.0使用修改spec.version的方式升级,DM 使用kubectl apply -f values-tidb-dm.yaml -n tidb-cluster的方式安装,脚本如下:
apiVersion: pingcap.com/v1alpha1
kind: DMCluster
metadata:
name: basic
namespace: tidb-cluster
spec:
version: v6.0.0
configUpdateStrategy: RollingUpdate
pvReclaimPolicy: Retain
discovery: {}
master:
baseImage: pingcap/dm
maxFailoverCount: 0
imagePullPolicy: IfNotPresent
service:
type: NodePort
# 需要将 DM-master service 暴露在一个固定的 NodePort 时配置
# masterNodePort: 30020
replicas: 1
storageSize: "10Gi"
requests:
cpu: 1
config: |
rpc-timeout = "40s"
openapi = true
worker:
baseImage: pingcap/dm
maxFailoverCount: 0
replicas: 1
storageSize: "100Gi"
requests:
cpu: 1
config: |
keepalive-ttl = 15
遇到的问题
部署好DM之后,测试了一个流程,放置了两天没操作,再次访问,报错:
从k8s上重新部署DM相关pod后,错误依旧。
DM的master和work错误pod如下:
master.log (62.6 KB)
work.log (126.2 KB)
一点小建议
这种配置方式需要grafana开放匿名访问,会被我们内网安全扫描工具提示有安全问题,建议换种方式实现此功能。
1 个赞
Min_Chen
(Make the world more reliable)
2
以什么方式暴露的 dm web ui?nodeport?
建议打开网页调试工具,看下是什么请求出错然后顺藤摸瓜对症下药。
1 个赞
数据小黑
(数据小黑)
3
ingress暴露的,我在内部做了个service,ingress代理了service的8261端口,顺藤没摸到瓜,都是404,哈哈
1 个赞
Min_Chen
(Make the world more reliable)
5
404 可能是 ingress 的问题,看下 ingress 对不对
数据小黑
(数据小黑)
6
排查了一下,发现环境变量里面没有openapi配置,查看本地部署文件是有,而且一开始是好用的。
重新kubuctl apple之后,发现有两个环境变量,一个有openapi配置,一个没有,master挂载的是有的
查看容器中的挂载的配置文件,发现配置也有了:

重新部署pod之后,还是404,我准备整个delete之后,重新部署试试。
1 个赞
Min_Chen
(Make the world more reliable)
7
把 pod service ingress 定义导出一份看一下吧。
kubectl -ntidb-cluster get po,svc,ing -lapp.kubernetes.io/instance=basic -oyaml --export
数据小黑
(数据小黑)
8
所有的东西都重新搞了一遍,也不行,重装大法不管用了
product.yaml (97.5 KB) product.yaml
Min_Chen
(Make the world more reliable)
9
kubectl -ntidb-cluster get po,svc,ing -oyaml --export
这样导一下吧,ingress 可能没 label 没导出来,然后说一下你用了哪个 service 哪个 ingress 暴露服务的
数据小黑
(数据小黑)
10
product.yaml (107.1 KB) product.yaml
ingress: dm-dashboard
service:basic-dm-master
请问内网扫描工具是如何扫匿名访问的?url 必须经过认证吗?
一开始能访问,但是后面不能访问的原因是通过 svc 去访问 dm-master 时,流量会被均摊到不同的 pod 上,当流量被打倒非 leader 的 pod 上的时候,就会出问题
我们在这个 issue 有跟进,预计下个版本会修复 https://github.com/pingcap/tiflow/issues/5179
1 个赞
从这里能看到 当前 ingress 连接的 ip 是 172.26.255.196,能瞅瞅这个 IP 的 pod 是不是 leader 么?
数据小黑
(数据小黑)
14
轮询ip,扫描端口,我们管的很严,在k8s上问题不大,毕竟ingress进去,匿名也扫不到,如果是tiup部署在虚机上,grafana这种组件,匿名访问就被通报了。
1 个赞
数据小黑
(数据小黑)
17
给leader加个label是不是就可以解决问题了?
目前可以暂时用这种方式,但是如果起多个 master 会导致 leader 漂移,就会有点麻烦