课程名称:301+【TiDB 4.0 PCTA 学习笔记】- 3.2.1 TiDB Cluster Monitoring(K8s 部署的 TiDB 集群监控)
学习时长:
30分钟。
课程收获:
深刻了解了K8S部署SVC的方法,以及如何配置和使用Ingress来访问grafana。顺便了解了PVC,PV,StorageClass关联关系和部署方法。
课程内容:
1.如何在k8s上部署tidb集群?
需通过yaml文件配置进行部署,培训方案中涉及的地址无法打开,可通过如下链接查询:
https://github.com/pingcap/tidb-operator/blob/master/examples/basic/tidb-monitor.yaml
需将metadata:name替换为tidb监控名称。Spec:cluster:name:basic替换为集群名称。
部署指令:kubectl apply -f ${tidb-monitor-file}.yaml -n {namespace}
默认为当前namespace,如果需要部署到其他namespace需指定。
检查部署是否成功:
Kubetcl get pod -l app.kubernetes.io/instance=basic -n ${namespace}|grep monitor
2.持久化和PV、PVC、StorageClass讲解
PVC描述的是Pod想要使用的持久化存储的属性,比如存储的大小,读写权限等.而PV则是一个具体的Volume属性,比如Volume的类型,挂载目录等.而StorageClass的作用,则是充当PV的模板,从而可以动态创建需要的PV.
详细配置方法参考可查看https://www.cnblogs.com/dengbingbing/p/10399207.html
在我们配置时,如果希望监控信息持久化,不会因为POD删除而删除,则可以配置图上的信息。其中storageclassname需和PVC配置相匹配。
如果不需要的话可手动删除:
Kubectl delete tidbmointor ${tidb-monitor-name} -n ${namespace}
3.如何访问GRAFANA和promethus
方式1:不推荐
通过port-forward暴露一个端口去访问grafana的svc,svc是K8S的POD提供的一个服务名称。
访问方法:
Kubetcl -n $namespace} port-forward svc/${grafana-svc-name} 3000:3000>/tmp/pf-grafana.log &
svc名称可通过 kubectl get svc -n ${namespace}
方式2:推荐
通过Ingress方式访问。什么是ingress?
Ingress 公开了从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制。可以理解为它像是一个提供负载均衡的反向代理服务器。其功能是由于Nginx和ingress聚会在一起实现的。
Ingress 组成
ingress controller
将新加入的Ingress转化成Nginx的配置文件并使之生效
ingress服务
将Nginx的配置抽象成一个Ingress对象,每添加一个新的服务只需写一个新的Ingress的yaml文件即可
Ingress 工作原理
1.ingress controller通过和kubernetes api交互,动态的去感知集群中ingress规则变化,
2.然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段nginx配置,
3.再写到nginx-ingress-control的pod里,这个Ingress controller的pod里运行着一个Nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中,
4.然后reload一下使配置生效。以此达到域名分配置和动态更新的问题。
https://kubernetes.io/zh/docs/concepts/services-networking/ingress/
使用前,必须先配置其控制器否则无法提供工作:
https://kubernetes.io/zh/docs/concepts/services-networking/ingress-controllers/
以下文档提供了一个通俗易懂的部署流程:
https://www.cnblogs.com/panwenbin-logs/p/9915927.html
4.k8s上的promethus和区别
没有了exporter两个组件来监控主机和网络,因为K8S是一个POD节点和物理机是有区别的。
单独研发了KUBE-PROMETHUS用于对K8S进行兼容。
5.如何访问dashboard?
需在部署TIDB MONITOR时开启enabledashboradinterproxy选项。
之后的部署方式和之前提到的promethus部署相同。区别仅是端口和SVC名称区别。
端口默认为10262。
学习过程中遇到的问题或延伸思考:
学习过程中参考的其他资料
https://kubernetes.io/zh/docs/concepts/services-networking/ingress-controllers/
https://github.com/pingcap/tidb-operator/blob/master/examples/basic/tidb-monitor.yaml
https://www.cnblogs.com/panwenbin-logs/p/9915927.html