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

image

image

image

通过 k8s 安装,版本是v4.0.1,用同样的方式 访问 grafana 和 prometheus 都是成功的,唯独 dashboard 是失败的

请问,可以尝试使用 ip 访问吗? 是否能够成功,多谢。

也不行哦

  1. 请展示下使用host访问时的报错,多谢。


  1. operator 时 1.1.1 吗?

用 host 访问
image

我安装是用 yaml 进行的安装,其实我也比较困惑(到现在我还没用到 operator ),但我在我的镜像中,发现我下载了 pingcap/tidb-operator:v1.1.0-rc.1

@Hacker_7iyGetZK

1,需要将 TiDB Operator 到 v1.1.1 版本,并更新 CRD 文件,升级文档可以参考这里:https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.1/upgrade-tidb-operator
2,然后将 Ingress 对象的端口由 10261 修改为 10262。

安装 TiDB Operator 请参考文档:https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.1/deploy-tidb-operator
部署多套 TiDB 集群:https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.1/deploy-on-general-kubernetes

  1. 我是通过 tidb-cluster.yaml 进行的部署,我看到 生成的 pod (basic-discovery-xxx)中用到了镜像 pingcap/tidb-operator:v1.1.0-rc.1,我如果 现在想 将此 pod 升级为v1.1.1,我该在 tidb-cluster.yaml 中如何设置?还是说我换成 operator 的部署方式(因为我之前看视频,其中推荐用 tidb-cluster.yaml 进行部署)。

  2. 端口这个,我看官网上是写着 10262,但是我的 service 中用的是 10261 这个端口(见问题中最后一幅截图中红框圈出来的部分)

通过 Ingress 访问 Dashboard 这个功能需要 TiDB Operator 升级到 v1.1.1 才可以使用。

TiDB Operator 是一个管理程序,安装文档前面已经提及过了:https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.1/deploy-tidb-operator。

有了这个管理程序,才可以创建 TiDB 集群,可以通过新建 TidbCluster 对象来创建一套或者多套 TiDB 集群,文档参考:https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.1/deploy-on-general-kubernetes。

可以通过这个文档了解下 TiDB Operator 的架构:https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.1/architecture。

1,确认下你的 TiDB Operator 的版本,如果不是 v1.1.1,需要先升级 TiDB Operator 这个管理程序的版本到 v1.1.1,basic-discovery-xxx 的版本是跟着 TiDB Operator 的版本走的。
2,升级到 v1.1.1 之后,就有 10262 这个端口了。

这里说的 v1.1.1 是指 TiDB Operator 这个管理程序的版本。

我将 tidb-operator 升级到 v1.1.1 了(crd 也升级了), basic-discovery 中的镜像 自动迁移到 v.1.1.1 了,后来发现 整个 tidb 都连不上(虽然 相关pod 都 处于 running)。

刚我就 把整个 tidb 卸载重装,但发现 tidb-pd 在不断的重启,导致 tikv 和 tidb 都无法起来。

版本信息:
tidb-operator:v1.1.1 tidb-cluster:v4.0.1

pod 状态:
image

pd 的 描述信息:

  1. tidb dashboard kubernetes 部署访问出现问题 dashboard 的问题,不知道这个案例和您的是否一致。
  2. 能否检查一下 pd 的日志,有什么报错吗?

昨天那个不断重启的问题,后来参照了 这个主题(https://asktug.com/t/topic/1473/7),不过我后来把 tidb 删了,重新装,结果发现 basic-pd-0 起来了,basic-tikv-0 也起来了,就是 basic-tidb-0 没起来(过了很久也是一样)
image

tidb-cluster.yaml 和之前的都一样,只是 operator 迁移到了 v1.1.1

麻烦帮忙提供以下信息:

1,查看下 tidb-controller-manager-xxx 这个 Pod 的日志,看看有没有报错信息。
2,看看 basic-pd-0 和 basic-tikv-0 这两个 Pod 日志,看看有没有报错信息阻碍了 tidb Pod 的创建。
3,看看用来创建 tidb 的 StatefulSet 是否存在?

kubectl get sts -n tidb-demo

好多错

  1. tidb-controller-manager-xxx 日志如下


    E0702 08:24:05.210707 1 tidb_monitor_controller.go:120] TidbMonitor: default/basic, sync failed, err: get tm[default/basic]'s target tc[default/basic] failed, err: tidbclusters.pingcap.com “basic” not found
    E0702 08:24:05.244403 1 tidb_initializer_controller.go:134] TiDBInitializer: tidb-demo/tidb-demo-init, sync failed, err: tidbcluster.pingcap.com “tidb-demo” not found, requeuing
    E0702 08:24:05.467460 1 tidb_cluster_controller.go:298] TidbCluster: tidb-demo/basic, sync failed Error response 500 URL http://basic-pd.tidb-demo:2379/pd/api/v1/stores,body response: “TiKV cluster not bootstrapped, please start TiKV first”
    , requeuing

  2. basic-pd-0 日志如下:

  3. basic-tikv-0 日志如下:

  4. kubectl get sts -n tidb-demo 是存在的

TidbMonitor 对象里面的 namespace 要跟 TidbCluster 保持一致,从日志看,TidbMonitor 的 namespace 是 default,而 TidbCluster 是在 tidb-demo namespace 下。

这个需要修改成同一个 namespace。

TidbMonitor 的 namespace 是 tidb-demo。该怎么改呢

从日志看 TidbMonitor 的 namespace 是 default 呢。

但是从下面这张图看这个 TidbMonitor 的 namespace 又是 tidb-demo。

看上去不一致,你能提供下这个 TiDB 集群的 TidbCluster 以及 TidbMonitor 的 yaml 文件吗?

TidbCluster


apiVersion: pingcap.com/v1alpha1
kind: TidbCluster
metadata:
name: basic
spec:
version: v4.0.1 # v3.0.13
timezone: UTC
configUpdateStrategy: RollingUpdate # 开启 滚动更新
pvReclaimPolicy: Delete
discovery:
limits:
cpu: 250m
memory: 150Mi
requests:
cpu: 80m
memory: 50Mi
pd:
enableDashboardInternalProxy: true # 开启 Dashboard 快捷访问
baseImage: pingcap/pd
replicas: 1
# if storageClassName is not set, the default Storage Class of the Kubernetes cluster will be used
storageClassName: local-storage
requests:
storage: “1Gi”
config: {}
tikv:
baseImage: pingcap/tikv
replicas: 1
# if storageClassName is not set, the default Storage Class of the Kubernetes cluster will be used
storageClassName: local-storage
requests:
storage: “1Gi”
config: {}
tidb:
baseImage: pingcap/tidb
replicas: 1
service:
# type: ClusterIP
type: NodePort
externalTrafficPolicy: Cluster
config: {}

TidbMonitor
image
apiVersion: pingcap.com/v1alpha1
kind: TidbMonitor
metadata:
name: basic
spec:
clusters:

  • name: basic
    prometheus:
    baseImage: prom/prometheus
    version: v2.18.1
    grafana:
    baseImage: grafana/grafana
    version: 7.0.3
    initializer:
    baseImage: pingcap/tidb-monitor-initializer
    version: v3.0.13
    reloader:
    baseImage: pingcap/tidb-monitor-reloader
    version: v1.0.1
    imagePullPolicy: IfNotPresent

我们查看下问题,会尽快反馈,多谢


你创建的这个 TiDB 集群和监控都是在 default namespace 下的。所以你应该这样查询 Pod:

kubectl get po -n default

你之前可能在 tidb-demo namespace 也创建过 TiDB 集群,但是却没有在那个 namespace 下创建过 TidbMonitor 对象是吧?用以下命令分别查看下呢:

kubectl get tc,tidbmonitor -n default
kubectl get tc,tidbmonotor -n tidb-demo

在 K8s 系统里,几乎所有对象都是有 namespace 的,查询对象的时候注意所在的 namespace 就可以了。

kubectl get tc,tidbmonitor -n default
的确这个下面是有数据的,后来删除后,重新把 整个环境删了,重新部署,依然起不来,log日志如下:
image

kubectl logs tidb-controller-manager-6f9ffd77f7-sqh27 -n tidb-admin


E0702 05:47:35.091443 1 tidb_initializer_controller.go:134] TiDBInitializer: tidb-demo/tidb-demo-init, sync failed, err: tidbcluster.pingcap.com “tidb-demo” not found, requeuing
E0702 05:47:35.280055 1 tidb_cluster_controller.go:298] TidbCluster: tidb-demo/basic, sync failed Error response 500 URL http://basic-pd.tidb-demo:2379/pd/api/v1/stores,body response: “TiKV cluster not bootstrapped, please start TiKV first”, requeuing
E0702 05:48:05.052313 1 tidb_monitor_controller.go:120] TidbMonitor: default/basic, sync failed, err: get tm[default/basic]'s target tc[default/basic] failed, err: tidbclusters.pingcap.com “basic” not found

kubectl logs basic-pd-0 -n tidb-demo
image