通过 ingress 访问 dashboard 失败(通过 k8s 部署 tidb)

basic-pd-0 会去请求 tidb-discovery-xxx 这个服务,现在需要去查看下这个 Pod 的日志,看看有什么报错信息?

1,从日志看 basic-pd-0 这个 已经启动了?看看这个 pod 的日志。
2,kubectl get sts -n tidb-demo 看下有没有 tikv 的 sts 创建。

目前看来,tidb-discovery 已经给 basic-pd-0 返回了启动参数。但是 basic-pd-0 貌似没有接受到这个参数,现在确认下这两个 Pod 之前的网络是否是通的吧?

m1(150) m2(151) w1(152) w2(153)
150 ping 151、152、153 都通
152 ping 153 通
153 ping 152 通

image

@swz-wyyy
你执行下这个命令,我看下 basic-pd-0 与 discovery 服务连通性。

kubectl -n tidb-demo exec -it basic-pd-0 – sh -c ‘nc -z -v basic-discovery 10261’

一直卡在 “waiting for discovery service to return start args” 一般有两个原因:

  1. 与 discovery pod 连接不通
  2. discovery pod 出现问题,无法返回正确的 start args

前者的话,需要检查下集群网络。后者的话,可能是集群哪里状态出现 bug 。

pod 的最新状态已经变成了这样
image

太心累了,是不是只能重装 k8s 环境了:joy:

不好意思,前面命令在中文输入法字符产生错误 。完整的是:

kubectl -n tidb-demo exec -it basic-pd-0 – sh -c ‘nc -z -v basic-discovery 10261’

另外可以检查下 kube-system 下所有 pods 是否运行正常,以及 nodes 状态。

kubectl -n kube-system get pods -o wide
kubectl get nodes -o wide

当然若没有业务在 k8s 环境运行,也可以尝试重装再看下。

另外,也可以先用 kind 快速创建一个 k8s 集群,先玩起来。这类工具创建、销毁 k8s 集群没啥成本。

我已经做了 引号 字符的替换了,结果就是 刚那截图

:sob: 关键之前已经跑起来的,就是因为做了升级 operator 的升级 (v1.1.1)

是中间的 - 应该是两个 – 。

若测试环境下,可能重来简单一点。

image

看来 pd 与 discovery 网络是联通的。可以先将 tidb-demo namespace 全部删除重来一下:

kubectl delete ns tidb-demo
kubectl create ns tidb-demo # 等待之前的 tidb-demo namespace 删除完成后操作
curl -LO https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic-cn/tidb-cluster.yaml
kubectl -n tidb-demo apply -f tidb-cluster.yaml

:call_me_hand: 可以了。感谢赞美

Good!

又遇到一个尴尬的问题,我现在不知道访问 数据库的端口是多少不知道了,
之前可以通过 【kubectl -n tidb-demo get svc basic-tidb -ojsonpath=“{.spec.ports[?(@.name==‘mysql-client’)].nodePort}{’
'}”】来获取 端口

使用 NodePort 的话,需要编辑 tidb cluster yaml ,在 tidb.service 字段配置以下内容:

service:
  type: NodePort
  externalTrafficPolicy: Local

我前面举的例子用的是 type 为 ClusterIP,需要修改为 NodePort 。可选地使用 externalTrafficPolicy: Local 。

关于 Kubernetes NodePort Serivice 类型检查可以参考:Service | Kubernetes

用于生产环境的话,建议过一遍详细的配置项:https://github.com/pingcap/tidb-operator/blob/master/examples/advanced/tidb-cluster.yaml

比如 spec.pvReclaimPolicy 建议配置为 Retain ,即使误删除 PVC 也不会将 PV 删除(避免丢失数据)等。

是的,之前是按 nodeport 配置的,刚curl 过来的配置文件没注意这个问题,好的,谢谢

如果有问题再继续跟帖,多谢。