kubernetes(十三) k8s 集群监控

网友投稿 266 2022-10-28

kubernetes(十三) k8s 集群监控

使用prometheus全方位监控k8s集群

prometheus架构

Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会(CNCF),成为继Kubernetes之后的第二个托管项目。

官网:https://prometheus.io github: Server:收集指标和存储时间序列数据,并提供查询接口。 ClientLibrary:客户端库。 Push Gateway:短期存储指标数据。主要用于临时性的任务。 Exporters:采集已有的第三方服务监控指标并暴露metrics。 Alertmanager:告警。 Web UI:简单的Web控制台。

prometheus监控k8s架构

监控指标 具体实现 举例
Pod性能 cAdvisor 容器CPU,内存使用率
Node性能 node-exporter 节点CPU,内存使用率
k8s资源对象 kube-state-metrics Pod/Deploy/Service

prometheus服务发现: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config

在k8s部署prometheus

./ ├── prometheus-configmap.yaml #主配置文件 ├── prometheus-rbac.yaml #权限认证 ├── prometheus-rules.yaml #告警策略 ├── prometheus-service.yaml #配置svc服务暴露 └── prometheus-statefulset.yaml #配置prometheus

部署流程(获取这些文件请加QQ122725501)

$ kubectl create ns ops $ ls prometheus-* | xargs -i kubectl apply -f {} # 访问kubectl get pv,pvc -n ops $ kubectl get pod -n ops

在k8s平台部署grafana

准备yml 配置好了deploy,pv存储,service服务暴露

$ vim grafana.yml apiVersion: apps/v1 kind: Deployment metadata: name: grafana namespace: ops spec: replicas: 1 selector: matchLabels: app: grafana template: metadata: labels: app: grafana spec: containers: - name: grafana image: grafana/grafana:7.1.0 ports: - containerPort: 3000 protocol: TCP resources: limits: cpu: 100m memory: 256Mi requests: cpu: 100m memory: 256Mi volumeMounts: - name: grafana-data mountPath: /var/lib/grafana subPath: grafana securityContext: fsGroup: 472 runAsUser: 472 volumes: - name: grafana-data persistentVolumeClaim: claimName: grafana --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: grafana namespace: ops spec: storageClassName: "managed-nfs-storage" accessModes: - ReadWriteMany resources: requests: storage: 5Gi --- apiVersion: v1 kind: Service metadata: name: grafana namespace: ops spec: type: NodePort ports: - port : 80 targetPort: 3000 nodePort: 30030 selector: app: grafana $ kubeapply -f grafana.yaml $ kubectl get pod,svc -n ops

测试访问: http://192.168.56.14:30030/ 加入数据源: 因为prometheus和grafana都是在k8s集群中部署的,所以使用svc的dns即可(名称配置成Prometheus,这样是为了方便使用模板获取数据)

监控k8s集群中的pod,node以及资源状态

pod 监控使用的yml(获取这些文件请加QQ122725501)

$ ls -l kube-* -rw-r--r-- 1 root root 2362 Jul 24 18:16 kube-state-metrics-deployment.yaml -rw-r--r-- 1 root root 2536 Jul 24 18:16 kube-state-metrics-rbac.yaml -rw-r--r-- 1 root root 498 Jul 24 18:16 kube-state-metrics-service.yaml $ ls kube-state-metrics-* | xargs -i kubectl apply -f {}

node 监控使用到的yml(获取这些文件请加QQ122725501)

$ ls -l node-exporter-* -rw-r--r-- 1 root root 1633 Jul 25 21:17 node-exporter-ds.yml -rw-r--r-- 1 root root 417 Jul 24 18:16 node-exporter-service.yaml $ kubectl apply -f node-exporter-ds.yml $ kubectl apply -f node-exporter-service.yaml

使用Grafana可视化展示prometheus监控数据

模板(获取这些文件请加QQ122725501)

[root@centos7-node4 dashboard]# ls -l total 180 -rw-r--r-- 1 root root 59467 Dec 23 2019 K8S工作节点监控-20191219.json -rw-r--r-- 1 root root 59483 Dec 23 2019 K8S资源对象状态监控-20191219.json -rw-r--r-- 1 root root 58945 Dec 23 2019 K8S集群资源监控-20191219.json

从此处即可导入模板

告警利器Alertmanager

配置好alertmanager可以发送告警邮箱到指定分组(获取这些文件请加QQ122725501)

$ ls -l alertmanager-* alertmanager-configmap.yaml #配置文件,这个需要修改对应的告警邮箱配置 alertmanager-deployment.yaml #deploy控制器,用于产生alertmanager副本 alertmanager-pvc.yaml #存储配置 alertmanager-service.yaml #服务暴露配置 # 告警邮箱配置: $ ls alertmanager-* | xargs -i kubeapply -f {} #修改完成邮箱配置之后再apply

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:TMS320C54XX DSP和USB接口芯片AN2131Q的接口软硬件设计
下一篇:封装变化与面向接口编程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~