首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何通过TMP监控TKE独立集群的etcd

如何通过TMP监控TKE独立集群的etcd

原创
作者头像
聂伟星
发布于 2023-06-13 09:21:57
发布于 2023-06-13 09:21:57
6590
举报

现在很多业务为了能否在k8s上进行一些定制的二次开发,都会选择tke的独立集群,独立集群,用户可以自行管理master做一下定制化配置,如果是托管集群,需要工单联系后端修改。

对于独立集群,master是用户自行管理,所以master的监控需要自行监控,这里一般可以直接通过腾讯云托管的prometheus(TMP)来监控master,但是tmp不会监控到k8s的etcd,只有apiserver、scheduler等监控,这个时候etcd的监控就需要我们自己来做。

下面我们来配置下如何通过TMP来监控独立集群的etcd,下面的操作是基于独立集群已经正常关联了tmp的前提。关于TMP和独立集群的创建使用可以参考下官网文档。 tke独立集群创建:https://cloud.tencent.com/document/product/457/32189

tmp关联tke独立集群:https://cloud.tencent.com/document/product/457/84543

1. 给etcd创建service

独立集群的etcd默认是没有创建service的,并且etcd对应的pod是没有配置label,因此,这里我们需要手动创建endpoint加入所有etcd的master节点,然后配置service关联endpoint才行。

代码语言:javascript
AI代码解释
复制
apiVersion: v1
kind: Service
metadata:
  name: etcd-k8s
  namespace: kube-system
  labels:
    k8s-app: etcd
spec:
  type: ClusterIP
  clusterIP: None
  ports:
  - name: port
    port: 2379
    protocol: TCP

---
apiVersion: v1
kind: Endpoints
metadata:
  name: etcd-k8s
  namespace: kube-system
  labels:
    k8s-app: etcd
subsets:
- addresses:
  - ip: 172.16.155.16
  - ip: 172.16.155.11
  - ip: 172.16.16.17
  - ip: 172.16.155.8
  - ip: 172.16.1.3
  ports:
  - name: port
    port: 2379
    protocol: TCP

集群有5个master节点,可以先获取master节点ip,然后配置到endpoint里面,etcd都hostnetwork模式pod运行。这里有个问题就是后续如果添加或者移除master节点,需要同步修改下endpoint列表。 当然也可以修改etcd的yaml直接加上label,这样就可以直接在service通过Selector关联etcd的pod,但是这里需要修改每个master节点的etcd yaml文件,然后重启etcd,etcd的yaml文件是/etc/kubernetes/manifests/etcd.yaml,可以在metadata字段加上labels来配置etcd pod的label。

代码语言:javascript
AI代码解释
复制
[root@172-16-155-11 /etc/kubernetes/manifests]# cat etcd.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    app: etcd
  annotations:
    scheduler.alpha.kubernetes.io/critical-pod: ""
  creationTimestamp: null
  name: etcd
  namespace: kube-system
spec:
  containers:
  - args:
    - --cert-file=/etc/etcd/certs/etcd-node.crt
    - --key-file=/etc/etcd/certs/etcd-node.key
    ...............

然后创建一个service关联上etcd的pod即可。

代码语言:javascript
AI代码解释
复制
apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: etcd
  name: etcd-k8s
  namespace: kube-system
spec:
  ports:
  - name: port
    port: 2379
    protocol: TCP
  selector:
    app: etcd
  sessionAffinity: None
  type: ClusterIP

这里有2种方式创建svc都可以,一般master节点变动很少,所以svc也不需要做太多变动。

2. 通过secret挂载etcd证书

因为etcd这里都是有证书鉴权的 ,这里通过serviceMonitor采集etcd监控需要配置证书才行,serviceMonitor是可以直接读取后端prometheus容器的证书配置的,tmp这里是vmagent,那么这里有什么办法将证书挂载到vmagent容器。

tmp的prometheus里面有这里提供了一个file-sync容器,只要集群内的secret有打上prometheus.tke.tencent.cloud.com/scrape-mount=true这个label,就会将文件同步到file-sync容器/etc/prometheus/secrets/目录下,后面就可以直接在serviceMonitor配置这个路径来配置证书。

下面我们来创建下secret,etcd的证书配置都在master节点的/etc/etcd/certs/目录

代码语言:javascript
AI代码解释
复制
kubectl -n prom-86rajg7v create secret generic etcd-certs --from-file=/etc/etcd/certs/etcd-node.crt --from-file=/etc/etcd/certs/etcd-node.key  --from-file=/etc/etcd/certs/etcd-cluster.crt

创建完secret后,我们给secret打上label

代码语言:javascript
AI代码解释
复制
kubectl label secret etcd-certs -n prom-86rajg7v prometheus.tke.tencent.cloud.com/scrape-mount=true

这个时候我们到tmp后端eks集群登陆对应独立集群的file-sync是否能看到证书文件

这里证书已经正常挂载到后端promethues的pod里面了,下面我们来配置serviceMonitor。

3. 创建serviceMonitor

代码语言:javascript
AI代码解释
复制
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: etcd-k8s
  namespace: prom-86rajg7v
  labels:
    k8s-app: etcd-k8s
spec:
  jobLabel: k8s-app
  endpoints:
  - port: port
    interval: 30s
    scheme: https
    tlsConfig:
      caFile: /etc/prometheus/secrets/etcd-certs/etcd-cluster.crt
      certFile: /etc/prometheus/secrets/etcd-certs/etcd-node.crt
      keyFile: /etc/prometheus/secrets/etcd-certs/etcd-node.key
      insecureSkipVerify: true
  selector:
    matchLabels:
      k8s-app: etcd
  namespaceSelector:
    matchNames:
    - kube-system

我们在ServiceMonitor配置证书配置和关联下第一步创建的service即可。

但是这里遇到一个问题,就是当我创建完ServiceMonitor后,tmp控制台的采集配置显示target都是空的,这是什么原因呢?

tmp关机tke集群会默认创建一个prometheuses对象,这里会定义采集那些ServiceMonitor,这里看下集群的prometheuses配置,是不是有特殊的配置。

代码语言:javascript
AI代码解释
复制
kubectl get prometheuses  tke-cls-xxxxx -n prom-86rajg7v -o yaml

看了下配置,serviceMonitorSelector有个label匹配选项,prom_id: prom-86rajg7v,这里是需要给serviceMonitor加上这个label才行

代码语言:javascript
AI代码解释
复制
kubectl label serviceMonitor etcd-k8s -n prom-86rajg7v prom_id=prom-86rajg7v

加上label后,这里就能正常获取target了。这里我们从prometheus检索下metrics数据,看看有没有etcd的数据。

这里能正常搜到etcd的监控数据,说明采集正常,tmp默认是没有提供prometheus这种可视化检索页面的,这里可以参考文档配置下https://cloud.tencent.com/developer/article/old/2261648

4. grafana配置etcd的dashboard

独立集群的etcd监控数据已经采集到tmp了,下面就是需要在grafana配置dashboard,这里有2种方案,一种是在tmp的集成中心安装etcd的dashboard

还可以到grafana的官网找下etcd的dashboard,https://grafana.com/grafana/dashboards/3070-etcd/

直接通过id导入模板,如果没开通外网,可以直接通过josn文件导入模板。

官网grafana的etcd模板监控如下

集成中心etcd模板监控如下

这里可能有些指标没有或者promsql的label匹配有问题,这里根据实际的label匹配修改下即可。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
prometheus-operator 监控 k8s 外部集群
其实监控 k8s 外部集群和监控内部集群没啥区别,大概思路就是把外部资源通过 endpoint的方式给他虚拟成 k8s 集群内部的一个资源,其实下面操作就是有点为了用k8s 而用 k8s 了,有点吃力不讨好的架势,但是我们这里为了学习,可以玩耍
张琳兮
2020/09/23
1.9K0
TKE上自建prometheus如何不影响TMP监控数据采集
首先我们了解下什么是tmp,腾讯云Prometheus 监控服务(Managed Service for Prometheus,TMP)是针对云原生服务场景进行优化的监控和报警解决方案,全面支持开源 Prometheus 的监控能力,为用户提供轻量、稳定、高可用的云原生 Prometheus 监控服务。借助 TMP,您无需自行搭建 Prometheus 监控系统,也无需关心数据存储、数据展示、系统运维等问题,只需简单配置即可享受支持多集群的高性能Prometheus 监控服务。
聂伟星
2022/06/10
8170
使用 VictoriaMetrics 监控 K8s 集群
过去几年,Kubernetes 已经成为容器编排的标准,越来越多的公司开始在生产系统使用 Kubernetes。通常我们使用 Prometheus 对 K8S 集群进行监控,但由于 Prometheus 自身单点的问题。不得不寻求一些联邦方案或者分布式高可用方案,社区热度比较高的项目有 Thanos,Cortex,VictoriaMetrics。本文就介绍使用 VictoriaMetrics 作为数据存储后端对 K8S 集群进行监控,k8s 部署不再具体描述。
米开朗基杨
2021/06/09
3.4K0
使用 VictoriaMetrics 监控 K8s 集群
Kubernetes 集群监控 ETCD 组件
除了 Kubernetes 集群中的一些资源对象、节点以及组件需要监控,有的时候我们可能还需要根据实际的业务需求去添加自定义的监控项,添加一个自定义监控的步骤也是非常简单的,主要有以下三个步骤:
高楼Zee
2020/12/15
2.1K0
TKE 1.20.6搭建Kube-Prometheus(prometheus-oprator)
线上开通了tke1.20.6的集群。嗯腾讯云有个原生的Prometheus的监控,开通了使用了一下。不过我没有怎么玩明白。文档也不全。还是想了下自己手动搭建一个Prometheus-oprator吧!
对你无可奈何
2021/08/10
8490
Prometheus监控k8s集群组件
cAdvisor已经内置在了 kubelet 组件之中,所以不需要单独去安装,cAdvisor的数据路径为/api/v1/nodes//proxy/metrics,同样这里使用 node 的服务发现模式,因为每一个节点下面都有 kubelet,自然都有cAdvisor采集到的数据指标,配置如下:
mikelLam
2022/10/31
1.5K0
Prometheus监控k8s集群组件
使用Operator部署Prometheus
Operator是CoreOS公司开发,用于扩展kubernetes API或特定应用程序的控制器,它用来创建、配置、管理复杂的有状态应用,例如数据库,监控系统。其中Prometheus-Operator就是其中一个重要的项目。 其架构图如下:
极客运维圈
2020/06/22
4.4K1
使用kube-prometheus部署k8s监控(最新版)
Prometheus Operator的本职就是一组用户自定义的CRD资源以及Controller的实现,Prometheus Operator负责监听这些自定义资源的变化,并且根据这些资源的定义自动化的完成如Prometheus Server自身以及配置的自动化管理工作。以下是Prometheus Operator的架构图
仙人技术
2021/02/25
15.4K5
使用kube-prometheus部署k8s监控(最新版)
Kubernetes容器集群管理环境 - Prometheus监控篇
一、Prometheus介绍 之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana。Prometheus(普罗米修斯)是一个开源系统监控和警报工具,最初是在SoundCloud建立的。自2012年成立以来,许多公司和组织都采用了普罗米修斯,该项目拥有一个非常活跃的开发者和用户社区。它现在是一个独立的开放源码项目,并且独立于任何公司,为了强调该点并澄清项目的治理结构,Prometheus在2016年加入了云计算基金会,成为继Kubernetes之后的第二个托管项目。 Prometheus是用来收集数据的,同时本身也提供强大的查询能力,结合Grafana即可以监控并展示出想要的数据。
洗尽了浮华
2019/07/10
2.4K0
Kubernetes容器集群管理环境 - Prometheus监控篇
Prometheus Operator手动部署
当今Cloud Native概念流行,对于容器、服务、节点以及集群的监控变得越来越重要。Prometheus 作为 Kubernetes 监控的事实标准,有着强大的功能和良好的生态。但是它不支持分布式,不支持数据导入、导出,不支持通过 API 修改监控目标和报警规则,所以在使用它时,通常需要写脚本和代码来简化操作。
YP小站
2020/06/04
2.1K0
使用Prometheus Operator 监控Kubernetes
Prometheus组件包括:Prometheus server、push gateway 、alertmanager、Web UI等。
菲宇
2019/06/12
1.2K0
使用Prometheus Operator 监控Kubernetes
Kubernetes集群监控-使用Prometheus Operator自定义监控
在 Prometheus Operator 中, 我们无需手动编辑配置文件添加 kubernetes_sd_config 配置, Prometheus Operator 提供了下述资源:
王先森sec
2023/12/27
1.3K0
Kubernetes集群监控-使用Prometheus Operator自定义监控
(3 / 3)CentOS搭建K8s微服务20条
k8s第三方资源监控资源展示平台、Prometheus(数据收集)、Grafana(数据展示)
老张的哲学
2023/01/09
6710
生产prometheus-operator 监控二进制kubernetes
`operator`是由CoreOS公司开发的,用来扩展kubernetes APi ,特定的应用程序控制器,它用来创建,配置和管理复杂的有状态应用,例如数据库,缓存和监控系统。`Operator`基于Kubernetes的资源和控制器概念之上构建,但同时又包含了应用程序特定的一些专业知识,比如创建一个数据库的`Operator`,则必须对创建的数据库和各种运维方式非常了解,创建`operator`的关键是 `CRD(CustomResourceDefinition/自定义资源定义)`的设计。
张琳兮
2020/09/23
9210
Kubernetes集群监控方案详解
本文介绍在k8s集群中使用node-exporter、prometheus、grafana对集群进行监控。
星哥玩云
2022/07/13
3.2K0
Kubernetes集群监控方案详解
Prometheus_operator使用
最新的版本官方将资源https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus迁移到了独立的 git 仓库中:https://github.com/coreos/kube-prometheus.git 克隆最新的代码:
mikelLam
2022/10/31
9740
Etcd 监控
Grafana 大盘: https://github.com/clay-wangzhi/grafana-dashboard/blob/master/etcd/etcd-dash.json 导入即可
SRE运维进阶之路
2023/06/21
6330
Helm安装Prometheus Operator
使用 helm 安装 Prometheus Operator。使用 helm 安装后,会在 Kubernetes 集群中创建、配置和管理 Prometheus 集群,chart 中包含多种组件:
py3study
2020/09/29
5.7K0
Helm安装Prometheus Operator
附017.Kubernetes_v1.17.4 Dashboard部署
dashboard是基于Web的Kubernetes用户界面。可以使用dashboard将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障排除,以及管理集群资源。可以使用dashboard来概述群集上运行的应用程序,以及创建或修改单个Kubernetes资源(例如部署、任务、守护进程等)。可以使用部署向导扩展部署,启动滚动更新,重新启动Pod或部署新应用程序。
木二
2020/06/18
7070
附017.Kubernetes_v1.17.4 Dashboard部署
grafana&prometheus生产级容器化监控-4:使用kube-prometheus监控k8s集群
(1).关于prometheus-operator和kube-prometheus
千里行走
2019/12/26
3.2K0
相关推荐
prometheus-operator 监控 k8s 外部集群
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档