采用文章大佬–为了提高自己的k8s熟练,按照这位大佬的文章做了一遍
https://www.yuque.com/cuiliang-s1qrv/k8s/yyiswl
如果已安装metrics-server需要先卸载,否则冲突
Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:
# git clone https://github.com/coreos/kube-prometheus.git

root@k8s-master:~/k8s-Prometheus# cd kube-prometheus/
root@k8s-master:~/k8s-Prometheus/kube-prometheus# ls
build.sh CONTRIBUTING.md example.jsonnet go.mod jsonnetfile.json kustomization.yaml manifests scripts
CHANGELOG.md developer-workspace examples go.sum jsonnetfile.lock.json LICENSE README.md tests
code-of-conduct.md docs experimental jsonnet kubescape-exceptions.json Makefile RELEASE.md
修改 kube-prometheus/manifests/grafana-service.yaml 文件,使用 nodepode 方式
root@k8s-master:~/k8s-Prometheus/kube-prometheus/manifests#
root@k8s-master:~/k8s-Prometheus/kube-prometheus/manifests# pwd
/root/k8s-Prometheus/kube-prometheus/manifests
root@k8s-master:~/k8s-Prometheus/kube-prometheus/manifests# vim grafana-service.yaml
1 apiVersion: v1
2 kind: Service
3 metadata:
4 labels:
5 app.kubernetes.io/component: grafana
6 app.kubernetes.io/name: grafana
7 app.kubernetes.io/part-of: kube-prometheus
8 app.kubernetes.io/version: 9.0.4
9 name: grafana
10 namespace: monitoring
11 spec:
12 type: NodePort
13 ports:
14 - name: http
15 port: 3000
16 targetPort: http
17 nodePort: 30100
18 selector:
19 app.kubernetes.io/component: grafana
20 app.kubernetes.io/name: grafana
21 app.kubernetes.io/part-of: kube-prometheus

修改 kube-prometheus/manifests/prometheus-service.yaml,改为nodepode方式
1 apiVersion: v1
2 kind: Service
3 metadata:
4 labels:
5 app.kubernetes.io/component: prometheus
6 app.kubernetes.io/instance: k8s
7 app.kubernetes.io/name: prometheus
8 app.kubernetes.io/part-of: kube-prometheus
9 app.kubernetes.io/version: 2.37.0
10 name: prometheus-k8s
11 namespace: monitoring
12 spec:
13 type: NodePort
14 ports:
15 - name: web
16 port: 9090
17 targetPort: web
18 nodePort: 30200
19 selector:
20 app.kubernetes.io/component: prometheus
21 app.kubernetes.io/instance: k8s
22 app.kubernetes.io/name: prometheus
23 app.kubernetes.io/part-of: kube-prometheus
24 sessionAffinity: ClientIP

1 apiVersion: v1
2 kind: Service
3 metadata:
4 labels:
5 app.kubernetes.io/component: alert-router
6 app.kubernetes.io/instance: main
7 app.kubernetes.io/name: alertmanager
8 app.kubernetes.io/part-of: kube-prometheus
9 app.kubernetes.io/version: 0.24.0
10 name: alertmanager-main
11 namespace: monitoring
12 spec:
13 type: NodePort
14 ports:
15 - name: web
16 port: 9093
17 targetPort: web
18 nodePort: 30300
19 selector:
20 app.kubernetes.io/component: alert-router
21 app.kubernetes.io/instance: main
22 app.kubernetes.io/name: alertmanager
23 app.kubernetes.io/part-of: kube-prometheus
24 sessionAffinity: ClientIP

创建monitoring名称空间
`# kubectl create namespace monitoring`
- 创建crd资源
`# kubectl apply -f kube-prometheus/manifests/setup/`
- 创建其他资源
`# kubectl apply -f kube-prometheus/manifests/`
error: unable to recognize "kube-prometheus/manifests/prometheus-prometheus.yaml": no matches for kind "Prometheus" in version "monitoring.coreos.com/v1"

没有采用上面命令,采用的下面解决报错命令
https://blog.csdn.net/weixin_48351036 #解决问题文章
解决办法:
``
$ kubectl create -f manifests/setup
$ until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
$ kubectl create -f manifests/

kubectl get pod -n monitoring







配置文档
https://jingyan.baidu.com/article/9faa7231ae65c2063c28cba9.html
首先在左边菜单找到setting设置按钮,然后在设备选项里面找到数据源data source点击进去

然后在界面点击add data source按钮,进入添加数据源的页面

然后在数据源添加的界面选择你的数据源类型,这里用的是prometheus数据源,点击它就行

然后设置数据源中的一些参数及数据源服务地址,主要是设置url,其他可以默认

然后点击save & test按钮,然后提示data source is working,就代表添加成功了,关掉该页面

END
点击左侧的加号的符号,然后在里面点击import导入按钮

然后输入模版的code,可以去官网找你喜欢的模版,然后复制code在这里添加即可

模板导入后,会进行数据源的选择,这里选择prometheus,然后点击import按钮就成功导入了



两个监控任务没有对应的目标

apiVersion: v1
kind: Service
metadata:
namespace: kube-system
name: kube-scheduler
labels:
k8s-app: kube-scheduler #与servicemonitor中的selector匹配
spec:
selector:
component: kube-scheduler # 与scheduler的pod标签一直
ports:
- name: http-metrics
port: 10251
targetPort: 10251
protocol: TCP

apiVersion: v1
kind: Service
metadata:
namespace: kube-system
name: kube-controller-manager
labels:
k8s-app: kube-controller-manager
spec:
selector:
component: kube-controller-manager
ports:
- name: http-metrics
port: 10252
targetPort: 10252
protocol: TCP

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: kube-scheduler
name: kube-scheduler
namespace: monitoring
spec:
endpoints:
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
interval: 30s # 每30秒采集一次信息
port: https-metrics # 对应service的端口名
scheme: https
tlsConfig:
insecureSkipVerify: true
jobLabel: k8s-app
namespaceSelector:
matchNames:
- kube-system
# selector匹配的资源标签为k8s-app=kube-scheduler
selector:
matchLabels:
k8s-app: kube-scheduler


root@k8s-master:~/k8s-Prometheus/kube-prometheus# pwd
/root/k8s-Prometheus/kube-prometheus
root@k8s-master:~/k8s-Prometheus/kube-prometheus# mkdir pushgetway
root@k8s-master:~/k8s-Prometheus/kube-prometheus# cd pushgetway/
root@k8s-master:~/k8s-Prometheus/kube-prometheus/pushgetway#
vim prometheus-pushgatewayServiceMonitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
prometheus: k8s
name: prometheus-pushgateway
namespace: monitoring
spec:
endpoints:
- honorLabels: true
port: http
jobLabel: k8s-app
selector:
matchLabels:
app: prometheus-pushgateway

vim prometheus-pushgatewayService.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: prometheus-pushgateway
name: prometheus-pushgateway
namespace: monitoring
spec:
type: NodePort
ports:
- name: http
port: 9091
nodePort: 30400
targetPort: metrics
selector:
app: prometheus-pushgateway
# type: ClusterIP

vim prometheus-pushgatewayDeployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: prometheus-pushgateway
name: prometheus-pushgateway
namespace: monitoring
spec:
replicas: 1
selector:
matchLabels:
app: prometheus-pushgateway
template:
metadata:
labels:
app: prometheus-pushgateway
spec:
containers:
- image: prom/pushgateway:v0.8.0
livenessProbe:
httpGet:
path: /#/status
port: 9091
initialDelaySeconds: 10
timeoutSeconds: 10
name: prometheus-pushgateway
ports:
- containerPort: 9091
name: metrics
readinessProbe:
httpGet:
path: /#/status
port: 9091
initialDelaySeconds: 10
timeoutSeconds: 10
resources:
limits:
cpu: 50m
memory: 100Mi
requests:
cpu: 50m
memory: 100Mi

kubectl apply -f .
nds: 10
name: prometheus-pushgateway
ports:
- containerPort: 9091
name: metrics
readinessProbe:
httpGet:
path: /#/status
port: 9091
initialDelaySeconds: 10
timeoutSeconds: 10
resources:
limits:
cpu: 50m
memory: 100Mi
requests:
cpu: 50m
memory: 100Mi
[外链图片转存中...(img-4VBPkFaF-1659189962398)]
###### 然后使用
```shell
kubectl apply -f .
