使用prometheus实现对k8s的监控

2019-09-27  本文已影响0人  xyz098

监控策略

prometheus操作指南 —监控kubernetes

白盒监控层
黑盒监控层

监控目标

目标 服务发现模式 监控方法 数据源
节点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的采集方式。故对症下药,不通类型的监控目标设置不通的数据采集方式。

上一篇 下一篇

猜你喜欢

热点阅读