美文网首页
使用prometheus实现对k8s的监控

使用prometheus实现对k8s的监控

作者: xyz098 | 来源:发表于2019-09-27 14:58 被阅读0次

监控策略

prometheus操作指南 —监控kubernetes

白盒监控层
  • 基础设施层(Node) : 集群和应用提供运行时环境,node exporter获取
  • 容器基础设施(Container): 应用提供运行时环境,kubelet cAdvisor获取
  • 用户应用(pod):包含一组容器,对外提供服务,应用内置提供prometheus获取
  • kubernetes组件: 核心组件的运行状态,确保平台自身稳定。apiserver的并发和吞吐量决定集群性能好坏,pod的启动时间指标影响使用体验
黑盒监控层
  • 内部服务负载均衡(service):提供集群应用与应用的访问,Blackbox Exporter探测
  • 外部访问入口(ingress):集群外访问入口,Blackbox Exporter探测

监控目标

目标 服务发现模式 监控方法 数据源
节点kubelet的基本运行状态 node 白盒监控 kubelet(node/metrics)或api-server
节点容器的状态 node 白盒监控 kubelet(node/cAdvisor)或api-server
节点node主机资源 node 白盒监控 node exporter
节点pod状态 pod 白盒监控 node exporter过滤pod
api-server组件的运行状态 endpoints 白盒监控 api server
service探测 service 黑盒监控 blackbox exporter
ingress探测 ingress 黑盒监控 blackbox exporter

部署实现

k8s的yaml文件

新建namespace
kubectl create -f yw-monitor-ns.yml
ConfigMaps管理配置文件
kubectl create -f prometheus-cfg.yml
# 查看cm是否正常
alias kywm='kubectl -n yw-monitor'
kywm get cm
kywm describe cm
Deployment部署Prometheus
# deployment部署prometheus的pod
kubectl create -f prometheus-deployment.yml
# 查看pod运行状态
kywm get pod
NAME                        READY   STATUS    RESTARTS   AGE
prometheus-8c69488b-khzkk   1/1     Running   0          3m
# 查看服务
kywm get svc
NAME         TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
prometheus   NodePort   172.16.255.30   <none>        9090:31212/TCP   2h
ClusterRole访问授权

基于角色的访问控制模型RBAC过程: 定义角色——> 角色赋予访问权限 ——> 创建账号 ——> 账号与角色绑定

clusterRole是全局的,不用指定命名空间。serviceAccount属于特定的命名空间资源

# 部署
kubectl create -f prometheus-rbac.yml
# 在promthues中增加访问账号
spec:
    xxxx
    spec:
      serviceAccountName: prometheus
      serviceAccount: prometheus
# 对depolyment的prometheus的pod变更升级
kubectl apply -f prometheus-deployment.yml

# 验证
# 指定ServiceAccount创建pod后,会自动将k8s的CA证书挂到pod对应的目录
kywm exec -it prometheus-b7b648474-gnpml ls /var/run/secrets/kubernetes.io/servi
ceaccount/
ca.crt     namespace  token
k8s服务发现实现监控

prometheuskubernetes API集成的5中服务发现模式,分别是Node、Service、Pod、Endpoint、Ingress

Pod: 跑多个容器进程组合成一个应用;

service: 给pod别名已经pod的访问;

endpoint(IP+PORT): 运行的进程

- job_name: 'kubernetes-pods'
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    insecure_skip_verify: true
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  # 通过设置kubernetes_sd_configs实现对各类资源的自动发现
  kubernetes_sd_configs:
  - role: pod 

注意:prometheus能够自动发现所有资源对象,作为target采集。但不是所有对象都支持prometheus的采集方式。故对症下药,不通类型的监控目标设置不通的数据采集方式。

相关文章

网友评论

      本文标题:使用prometheus实现对k8s的监控

      本文链接:https://www.haomeiwen.com/subject/ibqauctx.html