计算机系统应用教程网站

网站首页 > 技术文章 正文

kubernetes1.24从构建到躺平「十」

btikc 2024-09-04 03:09:04 技术文章 26 ℃ 0 评论

K8S结合Prometheus+Grafana

OS: Ubuntu Server 22.04 LTS

一: 安装Kube-Prometheus

1) Clone Kube-Prometheus

root@srv1:~# apt install git -y

root@srv1:~# git clone https://github.com/coreos/kube-prometheus
Cloning into 'kube-prometheus'...
remote: Enumerating objects: 16368, done.
remote: Counting objects: 100% (289/289), done.
remote: Compressing objects: 100% (118/118), done.
remote: Total 16368 (delta 202), reused 217 (delta 160), pack-reused 16079
Receiving objects: 100% (16368/16368), 8.15 MiB | 799.00 KiB/s, done.
Resolving deltas: 100% (10542/10542), done

2) 确认kube-prometheus文件

root@srv1:~# cd kube-prometheus/manifests
root@srv1:~/kube-prometheus/manifests# ls -l
total 1976
-rw-r--r-- 1 root root     928 Jun 25 17:07 alertmanager-alertmanager.yaml
-rw-r--r-- 1 root root     977 Jun 25 17:07 alertmanager-networkPolicy.yaml
-rw-r--r-- 1 root root     561 Jun 25 17:07 alertmanager-podDisruptionBudget.yaml
-rw-r--r-- 1 root root    7072 Jun 25 17:07 alertmanager-prometheusRule.yaml
-rw-r--r-- 1 root root    1443 Jun 25 17:07 alertmanager-secret.yaml        
-rw-r--r-- 1 root root     650 Jun 25 17:07 alertmanager-service.yaml 
-rw-r--r-- 1 root root     351 Jun 25 17:07 alertmanager-serviceAccount.yaml  
-rw-r--r-- 1 root root     637 Jun 25 17:07 alertmanager-serviceMonitor.yaml
-rw-r--r-- 1 root root     287 Jun 25 17:07 blackboxExporter-clusterRole.yaml  
-rw-r--r-- 1 root root     485 Jun 25 17:07 blackboxExporter-clusterRoleBinding.yaml
-rw-r--r-- 1 root root    1392 Jun 25 17:07 blackboxExporter-configuration.yaml
-rw-r--r-- 1 root root    3545 Jun 25 17:07 blackboxExporter-deployment.yaml 
-rw-r--r-- 1 root root     722 Jun 25 17:07 blackboxExporter-networkPolicy.yaml
-rw-r--r-- 1 root root     540 Jun 25 17:07 blackboxExporter-service.yaml
-rw-r--r-- 1 root root     315 Jun 25 17:07 blackboxExporter-serviceAccount.yaml  
-rw-r--r-- 1 root root     680 Jun 25 17:07 blackboxExporter-serviceMonitor.yaml
-rw-r--r-- 1 root root     344 Jun 25 17:07 grafana-config.yaml
-rw-r--r-- 1 root root     680 Jun 25 17:07 grafana-dashboardDatasources.yaml
-rw-r--r-- 1 root root 1548477 Jun 25 17:07 grafana-dashboardDefinitions.yaml
-rw-r--r-- 1 root root     658 Jun 25 17:07 grafana-dashboardSources.yaml     
-rw-r--r-- 1 root root    9290 Jun 25 17:07 grafana-deployment.yaml
-rw-r--r-- 1 root root     651 Jun 25 17:07 grafana-networkPolicy.yaml
-rw-r--r-- 1 root root    1427 Jun 25 17:07 grafana-prometheusRule.yaml
-rw-r--r-- 1 root root     452 Jun 25 17:07 grafana-service.yaml
-rw-r--r-- 1 root root     293 Jun 25 17:07 grafana-serviceAccount.yaml
-rw-r--r-- 1 root root     398 Jun 25 17:07 grafana-serviceMonitor.yaml
-rw-r--r-- 1 root root    4361 Jun 25 17:07 kubePrometheus-prometheusRule.yaml
-rw-r--r-- 1 root root    1712 Jun 25 17:07 kubeStateMetrics-clusterRole.yaml
-rw-r--r-- 1 root root     464 Jun 25 17:07 kubeStateMetrics-clusterRoleBinding.yaml    
-rw-r--r-- 1 root root    3423 Jun 25 17:07 kubeStateMetrics-deployment.yaml
-rw-r--r-- 1 root root     723 Jun 25 17:07 kubeStateMetrics-networkPolicy.yaml  
-rw-r--r-- 1 root root    3152 Jun 25 17:07 kubeStateMetrics-prometheusRule.yaml 
-rw-r--r-- 1 root root     580 Jun 25 17:07 kubeStateMetrics-service.yaml      
-rw-r--r-- 1 root root     316 Jun 25 17:07 kubeStateMetrics-serviceAccount.yaml      
-rw-r--r-- 1 root root    1011 Jun 25 17:07 kubeStateMetrics-serviceMonitor.yaml
-rw-r--r-- 1 root root   71499 Jun 25 17:07 kubernetesControlPlane-prometheusRule.yaml
-rw-r--r-- 1 root root    6997 Jun 25 17:07 kubernetesControlPlane-serviceMonitorApiserver.yaml
-rw-r--r-- 1 root root     591 Jun 25 17:07 kubernetesControlPlane-serviceMonitorCoreDNS.yaml
-rw-r--r-- 1 root root    6516 Jun 25 17:07 kubernetesControlPlane-serviceMonitorKubeControllerManager.yaml
-rw-r--r-- 1 root root     577 Jun 25 17:07 kubernetesControlPlane-serviceMonitorKubeScheduler.yaml
-rw-r--r-- 1 root root    7714 Jun 25 17:07 kubernetesControlPlane-serviceMonitorKubelet.yaml
-rw-r--r-- 1 root root     485 Jun 25 17:07 nodeExporter-clusterRole.yaml
-rw-r--r-- 1 root root     468 Jun 25 17:07 nodeExporter-clusterRoleBinding.yaml
-rw-r--r-- 1 root root    3588 Jun 25 17:07 nodeExporter-daemonset.yaml
-rw-r--r-- 1 root root     671 Jun 25 17:07 nodeExporter-networkPolicy.yaml
-rw-r--r-- 1 root root   14553 Jun 25 17:07 nodeExporter-prometheusRule.yaml
-rw-r--r-- 1 root root     492 Jun 25 17:07 nodeExporter-service.yaml
-rw-r--r-- 1 root root     306 Jun 25 17:07 nodeExporter-serviceAccount.yaml
-rw-r--r-- 1 root root     850 Jun 25 17:07 nodeExporter-serviceMonitor.yaml
-rw-r--r-- 1 root root     430 Jun 25 17:07 prometheus-clusterRole.yaml
-rw-r--r-- 1 root root     483 Jun 25 17:07 prometheus-clusterRoleBinding.yaml
-rw-r--r-- 1 root root     922 Jun 25 17:07 prometheus-networkPolicy.yaml
-rw-r--r-- 1 root root     546 Jun 25 17:07 prometheus-podDisruptionBudget.yaml
-rw-r--r-- 1 root root    1238 Jun 25 17:07 prometheus-prometheus.yaml
-rw-r--r-- 1 root root   15726 Jun 25 17:07 prometheus-prometheusRule.yaml
-rw-r--r-- 1 root root     507 Jun 25 17:07 prometheus-roleBindingConfig.yaml
-rw-r--r-- 1 root root    1661 Jun 25 17:07 prometheus-roleBindingSpecificNamespaces.yaml
-rw-r--r-- 1 root root     402 Jun 25 17:07 prometheus-roleConfig.yaml
-rw-r--r-- 1 root root    2161 Jun 25 17:07 prometheus-roleSpecificNamespaces.yaml
-rw-r--r-- 1 root root     637 Jun 25 17:07 prometheus-service.yaml
-rw-r--r-- 1 root root     343 Jun 25 17:07 prometheus-serviceAccount.yaml
-rw-r--r-- 1 root root     624 Jun 25 17:07 prometheus-serviceMonitor.yaml
-rw-r--r-- 1 root root     482 Jun 25 17:07 prometheusAdapter-apiService.yaml
-rw-r--r-- 1 root root     433 Jun 25 17:07 prometheusAdapter-clusterRole.yaml
-rw-r--r-- 1 root root     600 Jun 25 17:07 prometheusAdapter-clusterRoleAggregatedMetricsReader.yaml
-rw-r--r-- 1 root root     495 Jun 25 17:07 prometheusAdapter-clusterRoleBinding.yaml
-rw-r--r-- 1 root root     518 Jun 25 17:07 prometheusAdapter-clusterRoleBindingDelegator.yaml
-rw-r--r-- 1 root root     402 Jun 25 17:07 prometheusAdapter-clusterRoleServerResources.yaml
-rw-r--r-- 1 root root    2204 Jun 25 17:07 prometheusAdapter-configMap.yaml
-rw-r--r-- 1 root root    3171 Jun 25 17:07 prometheusAdapter-deployment.yaml
-rw-r--r-- 1 root root     564 Jun 25 17:07 prometheusAdapter-networkPolicy.yaml
-rw-r--r-- 1 root root     501 Jun 25 17:07 prometheusAdapter-podDisruptionBudget.yaml
-rw-r--r-- 1 root root     515 Jun 25 17:07 prometheusAdapter-roleBindingAuthReader.yaml
-rw-r--r-- 1 root root     501 Jun 25 17:07 prometheusAdapter-service.yaml
-rw-r--r-- 1 root root     323 Jun 25 17:07 prometheusAdapter-serviceAccount.yaml
-rw-r--r-- 1 root root     906 Jun 25 17:07 prometheusAdapter-serviceMonitor.yaml
-rw-r--r-- 1 root root    1401 Jun 25 17:07 prometheusOperator-clusterRole.yaml
-rw-r--r-- 1 root root     471 Jun 25 17:07 prometheusOperator-clusterRoleBinding.yaml
-rw-r--r-- 1 root root    2631 Jun 25 17:07 prometheusOperator-deployment.yaml
-rw-r--r-- 1 root root     694 Jun 25 17:07 prometheusOperator-networkPolicy.yaml
-rw-r--r-- 1 root root    5819 Jun 25 17:07 prometheusOperator-prometheusRule.yaml
-rw-r--r-- 1 root root     515 Jun 25 17:07 prometheusOperator-service.yaml
-rw-r--r-- 1 root root     321 Jun 25 17:07 prometheusOperator-serviceAccount.yaml
-rw-r--r-- 1 root root     715 Jun 25 17:07 prometheusOperator-serviceMonitor.yaml
drwxr-xr-x 2 root root    4096 Jun 25 17:07 setup

3) 修改源

root@srv1:~/kube-prometheus/manifests# sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' ./prometheusOperator-deployment.yaml
root@srv1:~/kube-prometheus/manifests# sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' ./prometheus-prometheus.yaml
root@srv1:~/kube-prometheus/manifests# sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' ./alertmanager-alertmanager.yaml
root@srv1:~/kube-prometheus/manifests# sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' ./kubeStateMetrics-deployment.yaml
root@srv1:~/kube-prometheus/manifests# sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' ./nodeExporter-daemonset.yaml
root@srv1:~/kube-prometheus/manifests# sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' ./blackboxExporter-deployment.yaml
root@srv1:~/kube-prometheus/manifests# sed -i 's/k8s.gcr.io\/kube-state-metrics\/kube-state-metrics:v2.5.0/bitnami\/kube-state-metrics:2.5.0/g' ./kubeStateMetrics-deployment.yaml
root@srv1:~/kube-prometheus/manifests# sed -i 's/k8s.gcr.io\/prometheus-adapter\/prometheus-adapter:v0.9.1/selina5288\/prometheus-adapter:v0.9.1/g' ./prometheusAdapter-deployment.yaml

4) 设定NodePort

root@srv1:~/kube-prometheus/manifests# vim prometheus-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    prometheus: k8s
  name: prometheus-k8s
  namespace: monitoring
spec:
  # 新增
  type: NodePort
  ports:
  - name: web
    port: 9090
    targetPort: web
    # 新增
    nodePort: 30090
  selector:
    app: prometheus
    prometheus: k8s
  sessionAffinity: ClientIP

root@srv1:~/kube-prometheus/manifests# vim alertmanager-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    alertmanager: main
  name: alertmanager-main
  namespace: monitoring
spec:
  # 新增
  type: NodePort
  ports:
  - name: web
    port: 9093
    targetPort: web
    # 新增
    nodePort: 30093
  selector:
    alertmanager: main
    app: alertmanager
  sessionAffinity: ClientIP

root@srv1:~/kube-prometheus/manifests# vim grafana-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  # 新增
  type: NodePort
  ports:
  - name: http
    port: 3000
    targetPort: http
    # 新增
    nodePort: 32000
  selector:
    app: grafana


二: 安装Kube-Prometheus

1) 生成DashBoard

root@srv1:~/kube-prometheus/manifests# kubectl create -f setup/
namespace/monitoring created
customresourcedefinition.apiextensions.k8s.io/alertmanagerconfigs.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/probes.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/thanosrulers.monitoring.coreos.com created
namespace/monitoring created

2) 安装Prometheus、Grafana等服务

root@srv1:~/kube-prometheus/manifests# kubectl create -f .
alertmanager.monitoring.coreos.com/main created
networkpolicy.networking.k8s.io/alertmanager-main created
poddisruptionbudget.policy/alertmanager-main created
prometheusrule.monitoring.coreos.com/alertmanager-main-rules created
secret/alertmanager-main created
service/alertmanager-main created
serviceaccount/alertmanager-main created
servicemonitor.monitoring.coreos.com/alertmanager-main created
clusterrole.rbac.authorization.k8s.io/blackbox-exporter created
clusterrolebinding.rbac.authorization.k8s.io/blackbox-exporter created
configmap/blackbox-exporter-configuration created
deployment.apps/blackbox-exporter created
networkpolicy.networking.k8s.io/blackbox-exporter created
service/blackbox-exporter created        
serviceaccount/blackbox-exporter created
servicemonitor.monitoring.coreos.com/blackbox-exporter created
secret/grafana-config created
secret/grafana-datasources created
configmap/grafana-dashboard-alertmanager-overview created
configmap/grafana-dashboard-apiserver created
configmap/grafana-dashboard-cluster-total created
configmap/grafana-dashboard-controller-manager created
configmap/grafana-dashboard-grafana-overview created              
configmap/grafana-dashboard-k8s-resources-cluster created
configmap/grafana-dashboard-k8s-resources-namespace created
configmap/grafana-dashboard-k8s-resources-node created
configmap/grafana-dashboard-k8s-resources-pod created
configmap/grafana-dashboard-k8s-resources-workload created
configmap/grafana-dashboard-k8s-resources-workloads-namespace created
configmap/grafana-dashboard-kubelet created
configmap/grafana-dashboard-namespace-by-pod created
configmap/grafana-dashboard-namespace-by-workload created
configmap/grafana-dashboard-node-cluster-rsrc-use created
configmap/grafana-dashboard-node-rsrc-use created
configmap/grafana-dashboard-nodes-darwin created 
configmap/grafana-dashboard-nodes created
configmap/grafana-dashboard-persistentvolumesusage created
configmap/grafana-dashboard-pod-total created
configmap/grafana-dashboard-prometheus-remote-write created
configmap/grafana-dashboard-prometheus created
configmap/grafana-dashboard-proxy created
configmap/grafana-dashboard-scheduler created
configmap/grafana-dashboard-workload-total created
configmap/grafana-dashboards created
deployment.apps/grafana created
networkpolicy.networking.k8s.io/grafana created
prometheusrule.monitoring.coreos.com/grafana-rules created
service/grafana created
serviceaccount/grafana created
servicemonitor.monitoring.coreos.com/grafana created
prometheusrule.monitoring.coreos.com/kube-prometheus-rules created
clusterrole.rbac.authorization.k8s.io/kube-state-metrics created
clusterrolebinding.rbac.authorization.k8s.io/kube-state-metrics created
deployment.apps/kube-state-metrics created
networkpolicy.networking.k8s.io/kube-state-metrics created
prometheusrule.monitoring.coreos.com/kube-state-metrics-rules created
service/kube-state-metrics created
serviceaccount/kube-state-metrics created
servicemonitor.monitoring.coreos.com/kube-state-metrics created
prometheusrule.monitoring.coreos.com/kubernetes-monitoring-rules created
servicemonitor.monitoring.coreos.com/kube-apiserver created
servicemonitor.monitoring.coreos.com/coredns created
servicemonitor.monitoring.coreos.com/kube-controller-manager created
servicemonitor.monitoring.coreos.com/kube-scheduler created
servicemonitor.monitoring.coreos.com/kubelet created
clusterrole.rbac.authorization.k8s.io/node-exporter created
clusterrolebinding.rbac.authorization.k8s.io/node-exporter created
daemonset.apps/node-exporter created
networkpolicy.networking.k8s.io/node-exporter created
prometheusrule.monitoring.coreos.com/node-exporter-rules created
service/node-exporter created
serviceaccount/node-exporter created
servicemonitor.monitoring.coreos.com/node-exporter created
clusterrole.rbac.authorization.k8s.io/prometheus-k8s created
clusterrolebinding.rbac.authorization.k8s.io/prometheus-k8s created
networkpolicy.networking.k8s.io/prometheus-k8s created
poddisruptionbudget.policy/prometheus-k8s created
prometheus.monitoring.coreos.com/k8s created
prometheusrule.monitoring.coreos.com/prometheus-k8s-prometheus-rules created
rolebinding.rbac.authorization.k8s.io/prometheus-k8s-config created
rolebinding.rbac.authorization.k8s.io/prometheus-k8s created
rolebinding.rbac.authorization.k8s.io/prometheus-k8s created
rolebinding.rbac.authorization.k8s.io/prometheus-k8s created
role.rbac.authorization.k8s.io/prometheus-k8s-config created
role.rbac.authorization.k8s.io/prometheus-k8s created
role.rbac.authorization.k8s.io/prometheus-k8s created
role.rbac.authorization.k8s.io/prometheus-k8s created
service/prometheus-k8s created
serviceaccount/prometheus-k8s created
servicemonitor.monitoring.coreos.com/prometheus-k8s created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io configured
clusterrole.rbac.authorization.k8s.io/prometheus-adapter created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader configured
clusterrolebinding.rbac.authorization.k8s.io/prometheus-adapter created
clusterrolebinding.rbac.authorization.k8s.io/resource-metrics:system:auth-delegator created
clusterrole.rbac.authorization.k8s.io/resource-metrics-server-resources created
configmap/adapter-config created
deployment.apps/prometheus-adapter created
networkpolicy.networking.k8s.io/prometheus-adapter created
poddisruptionbudget.policy/prometheus-adapter created
rolebinding.rbac.authorization.k8s.io/resource-metrics-auth-reader created
service/prometheus-adapter created
serviceaccount/prometheus-adapter created
servicemonitor.monitoring.coreos.com/prometheus-adapter created
clusterrole.rbac.authorization.k8s.io/prometheus-operator created
clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator created
deployment.apps/prometheus-operator created
networkpolicy.networking.k8s.io/prometheus-operator created
prometheusrule.monitoring.coreos.com/prometheus-operator-rules created
service/prometheus-operator created
serviceaccount/prometheus-operator created
servicemonitor.monitoring.coreos.com/prometheus-operator created

3) 确认运行状态

root@srv1:~/kube-prometheus/manifests# kubectl get pod -n monitoring
NAME                                   READY   STATUS    RESTARTS   AGE
alertmanager-main-0                    2/2     Running   0          25m
alertmanager-main-1                    2/2     Running   0          25m
alertmanager-main-2                    2/2     Running   0          25m
blackbox-exporter-656d46c758-x7mj8     3/3     Running   0          25m
grafana-7bf795c5b-27mxz                1/1     Running   0          25m
kube-state-metrics-6f6f9898ff-2wwnp    3/3     Running   0          25m
node-exporter-nvfng                    2/2     Running   0          25m
node-exporter-v76q4                    2/2     Running   0          25m
node-exporter-xjljn                    2/2     Running   0          25m
prometheus-adapter-6957bd4fcc-7qw2k    1/1     Running   0          25m
prometheus-adapter-6957bd4fcc-fccmq    1/1     Running   0          25m
prometheus-k8s-0                       2/2     Running   0          25m
prometheus-k8s-1                       2/2     Running   0          25m
prometheus-operator-5756996bfb-c7k4f   2/2     Running   0          25m

三: 访问测试

1) 访问Prometheus

[浏览器]==>[http://srv1.1000y.cloud:30090]

2) 访问Alert-Manager

[浏览器]==>[http://srv1.1000y.cloud:30093]

3) 访问Grafana

[浏览器]==>[http://srv1.1000y.cloud:32000]


四. 配置Granfa

1) 更改admin账户的密码

2) 测试Prometheus数据源是否正常

3) 添加监控模板

更多k8s监控模板请查询: https://grafana.com/dashboards?dataSource=prometheus&search=kubewu


五: 显示监控信息

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表