prometheus监控k8s集群信息(通过kubelet)
prometheus监控k8s集群信息(通过kubelet)
一、创建prometheus访问k8s权限账户(在k8s集群中操作)。
1、在k8s集群中创建服务账户
vim prometheus-sa.yaml
apiVersion: v1 kind: ServiceAccount metadata: name: prometheus-sa namespace: monitor
2、创建集群角色
vim prometheus-cr.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: namespace: monitor name: prometheus-cr rules: - apiGroups: - "" resources: - nodes - services - endpoints - pods - nodes/proxy verbs: - get - list - watch - apiGroups: - "extensions" resources: - ingresses verbs: - get - list - watch - apiGroups: - "" resources: - configmaps - nodes/metrics verbs: - get - nonResourceURLs: - /metrics verbs: - get
3、绑定服务账户和集群角色
vim prometheus-crb.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: prometheus-crb roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: prometheus-cr subjects: - kind: ServiceAccount name: prometheus-sa namespace: monitor
4、通过yaml文件创建
kubectl apply -f prometheus-sa.yaml kubectl apply -f prometheus-cr.yaml kubectl apply -f prometheus-crb.yaml
二、获取prometheus-sa服务账户token信息。
1、获取查询secrets名称。
kubectl describe sa prometheus-sa -nmonitor
其中Tokens的值就是secrets的信息。
2、查看secrets信息,获取token。
kubectl describe secrets prometheus-sa-token-6dprr -nmonitor
其中token项的值就是prometheus需要用到的token信息,复制到prometheus服务器的一个文件中,这里保存文件为/usr/local/prometheus/cert/token。
三、配置prometheus。
因为是部署在集群外部的prometheus,需要通过访问apiserver去自动发现kubelet的地址,通过kubelet中集成的/metrics/cadvisor接口来获取信息。
1、在prometheus配置文件中,新增一个job
vim /usr/local/prometheus/prometheus.yml
- job_name: 'k8s-kubelet' scheme: https scrape_interval: 10s scrape_timeout: 10s tls_config: insecure_skip_verify: true #跳过证书认证 bearer_token_file: /usr/local/prometheus/cert/token #token文件地址 metrics_path: /metrics/cadvisor kubernetes_sd_configs: #k8s自发现 - api_server: https://xxx.xxx.xxx.xxx:6443 #apiserver地址 role: node #根据node自发现 tls_config: insecure_skip_verify: true bearer_token_file: /usr/local/prometheus/cert/token relabel_configs: # 配置重新设置抓取 kubelet 指标时的目标路径和标签 - source_labels: [__meta_kubernetes_node_name] regex: (.+) target_label: __metrics_path__ replacement: metrics/cadvisor - action: labelmap regex: __meta_kubernetes_node_label_(.+)
#以下为通过apiserver来获取k8s集群的信息 # - job_name: 'k8s-apiservers' # kubernetes_sd_configs: # - role: endpoints # api_server: https://xxx.xxx.xxx.xxx:6443 # tls_config: # insecure_skip_verify: true # bearer_token_file: /usr/local/prometheus/cert/token # scheme: https # tls_config: # ca_file: /usr/local/prometheus/cert/ca.crt # insecure_skip_verify: true # bearer_token_file: /usr/local/prometheus/cert/token # relabel_configs: # - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] # action: keep # regex: default;kubernetes;https
通过kubelet可以获取POD的一些基本的资源使用情况,而apiserver获取的是集群的一些信息,不是特殊情况下使用很少,所以这里只做简单配置。
2、重新加载prometheus配置。
curl -X POST http://localhost:9090/-/reload
3、页面查看监控监控状态。
四、配置grafana
根据需求配置自己想要的信息图像展
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!