linux怎么查看本机内存大小
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~