容器化prometheus
# 下载的0.5版本
[root@\ k8s-m-01/opt]# git clone -b release-0.5 --single-branch https://github.com/prometheus-operator/kube-prometheus.git
[root@\ k8s-m-01/opt]# cd kube-prometheus/
[root@\ k8s-m-01/opt/kube-prometheus]# ll
-rwxr-xr-x. 1 root root 610 Apr 23 16:24 build.sh
-rw-r--r--. 1 root root 3039 Apr 23 16:24 code-of-conduct.md
-rw-r--r--. 1 root root 1422 Apr 23 16:24 DCO
drwxr-xr-x. 2 root root 4096 Apr 23 16:24 docs
-rw-r--r--. 1 root root 1623 Apr 23 16:24 example.jsonnet
drwxr-xr-x. 6 root root 4096 Apr 23 16:24 examples
drwxr-xr-x. 4 root root 54 Apr 23 16:24 experimental
-rw-r--r--. 1 root root 1290 Apr 23 16:24 go.mod
-rw-r--r--. 1 root root 16389 Apr 23 16:24 go.sum
drwxr-xr-x. 3 root root 68 Apr 23 16:24 hack
drwxr-xr-x. 3 root root 29 Apr 23 16:24 jsonnet
-rw-r--r--. 1 root root 206 Apr 23 16:24 jsonnetfile.json
-rw-r--r--. 1 root root 3811 Apr 23 16:24 jsonnetfile.lock.json
-rw-r--r--. 1 root root 3458 Apr 23 16:24 kustomization.yaml
-rw-r--r--. 1 root root 11325 Apr 23 16:24 LICENSE
-rw-r--r--. 1 root root 1395 Apr 23 16:24 Makefile
drwxr-xr-x. 3 root root 4096 Apr 23 16:24 manifests
-rw-r--r--. 1 root root 126 Apr 23 16:24 NOTICE
-rw-r--r--. 1 root root 178 Apr 23 16:24 OWNERS
-rw-r--r--. 1 root root 32795 Apr 23 16:24 README.md
drwxr-xr-x. 2 root root 104 Apr 23 16:24 scripts
-rw-r--r--. 1 root root 928 Apr 23 16:24 sync-to-internal-registry.jsonnet
drwxr-xr-x. 3 root root 17 Apr 23 16:24 tests
-rwxr-xr-x. 1 root root 808 Apr 23 16:24 test.sh
[root@\ k8s-m-01/opt/kube-prometheus]# cd manifests/
[root@\ k8s-m-01/opt/kube-prometheus/manifests]# cd setup/
[root@\ k8s-m-01/opt/kube-prometheus/manifests/setup]# ll
-rw-r--r--. 1 root root 60 Apr 23 16:24 0namespace-namespace.yaml
-rw-r--r--. 1 root root 268343 Apr 23 16:24 prometheus-operator-0alertmanagerCustomResourceDefinition.yaml
-rw-r--r--. 1 root root 12635 Apr 23 16:24 prometheus-operator-0podmonitorCustomResourceDefinition.yaml
-rw-r--r--. 1 root root 348686 Apr 23 16:24 prometheus-operator-0prometheusCustomResourceDefinition.yaml
-rw-r--r--. 1 root root 3605 Apr 23 16:24 prometheus-operator-0prometheusruleCustomResourceDefinition.yaml
-rw-r--r--. 1 root root 23305 Apr 23 16:24 prometheus-operator-0servicemonitorCustomResourceDefinition.yaml
-rw-r--r--. 1 root root 279736 Apr 23 16:24 prometheus-operator-0thanosrulerCustomResourceDefinition.yaml
-rw-r--r--. 1 root root 425 Apr 23 16:24 prometheus-operator-clusterRoleBinding.yaml
-rw-r--r--. 1 root root 1665 Apr 23 16:24 prometheus-operator-clusterRole.yaml
-rw-r--r--. 1 root root 1943 Apr 23 16:24 prometheus-operator-deployment.yaml
-rw-r--r--. 1 root root 239 Apr 23 16:24 prometheus-operator-serviceAccount.yaml
-rw-r--r--. 1 root root 422 Apr 23 16:24 prometheus-operator-service.yaml
# 这里创建了个monitoring 的命名空间
[root@\ k8s-m-01/opt/kube-prometheus/manifests/setup]# kubectl apply -f ./
namespace/monitoring created
sourceDefinition
customresour
cedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/podmonitors.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
clusterrole.rbac.authorization.k8s.io/prometheus-operator created
clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator created
deployment.apps/prometheus-operator created
service/prometheus-operator created
serviceaccount/prometheus-operator created
# 查看启动了pod(相当于premotheus的管理pod)
[root@\ k8s-m-01/opt/kube-prometheus/manifests/setup]# kubectl get pods -n monitoring
NAME READY STATUS RESTARTS AGE
prometheus-operator-848d669f6d-rmhjs 2/2 Running 0 54s
# 返回到上一层目录,执行当前文件的yaml
[root@\ k8s-m-01/opt/kube-prometheus/manifests/setup]# cd ..
[root@\ k8s-m-01/opt/kube-prometheus/manifests]# kubectl apply -f .
# 查看生成pod
[root@\ k8s-m-01/opt/kube-prometheus/manifests]# kubectl get pods -n monitoring
NAME READY STATUS RESTARTS AGE
alertmanager-main-0 2/2 Running 0 95s
alertmanager-main-1 2/2 Running 0 95s
alertmanager-main-2 2/2 Running 0 95s
grafana-5d9d5f67c4-74vtb 1/1 Running 0 93s
kube-state-metrics-7fddf8779f-d9d7h 3/3 Running 0 93s
node-exporter-f9wnz 2/2 Running 0 92s
node-exporter-hjxgm 2/2 Running 0 92s
node-exporter-p5j48 2/2 Running 0 92s
prometheus-adapter-cb548cdbf-fwffw 1/1 Running 0 93s
prometheus-k8s-0 2/3 Running 1 91s
prometheus-k8s-1 2/3 Running 1 91s
prometheus-operator-848d669f6d-rmhjs 2/2 Running 0 4m5s
# 查看service,需要建立ingress(不建立ingress的话,就修改service的类型使用ip+端口)
[root@\ k8s-m-01/opt/kube-prometheus/manifests]# kubectl get svc -n monitoring
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alertmanager-main ClusterIP 10.96.131.163 <none> 9093/TCP 56s
alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 57s
grafana ClusterIP 10.101.230.111 <none> 3000/TCP 55s
kube-state-metrics ClusterIP None <none> 8443/TCP,9443/TCP 55s
node-exporter ClusterIP None <none> 9100/TCP 55s
prometheus-adapter ClusterIP 10.108.147.237 <none> 443/TCP 54s
prometheus-k8s ClusterIP 10.105.207.58 <none> 9090/TCP 53s
prometheus-operated ClusterIP None <none> 9090/TCP 53s
prometheus-operator ClusterIP None <none> 8443/TCP 3m27s
# 创建ingress
[root@\ k8s-m-01/opt/kube-prometheus/manifests]# vim prem_ingress.yaml
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: prometheus-k8s
namespace: monitoring
spec:
rules:
- host: "prometheus.k8s.com"
http:
paths:
- backend:
serviceName: prometheus-k8s
servicePort: 9090
path: /
---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: grafana
namespace: monitoring
spec:
rules:
- host: "grafana.k8s.com"
http:
paths:
- backend:
serviceName: grafana
servicePort: 3000
path: /
# 执行
[root@\ k8s-m-01/opt/kube-prometheus/manifests]# kubectl apply -f prem_ingress.yaml
# 查看生成的ingress域名
[root@\ k8s-m-01~/yaml]# kubectl get ingress -n monitoring
NAME CLASS HOSTS ADDRESS PORTS AGE
grafana <none> grafana.k8s.com 80 24s
prometheus-k8s <none> prometheus.k8s.com 80 24s
# 域名访问直接使用端口31542
[root@\ k8s-m-01~/yaml]# kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.99.245.222 <none> 80:31542/TCP,443:31331/TCP 56s
ingress-nginx-controller-admission ClusterIP 10.99.198.158 <none> 443/TCP 57s
# 如果使用ip+端口,修改以下的service的类型
[root@\ k8s-m-01~]# kubectl edit svc -n monitoring grafana
type: NodePort
[root@\ k8s-m-01~]# kubectl edit svc -n monitoring prometheus-k8s
type: NodePort
# 查看service的端口,便可以ip + 端口访问
[root@\ k8s-m-01~/yaml]# kubectl get svc -n monitoring
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alertmanager-main ClusterIP 10.109.64.152 <none> 9093/TCP 14m
alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 14m
grafana NodePort 10.110.108.229 <none> 3000:32286/TCP 14m
kube-state-metrics ClusterIP None <none> 8443/TCP,9443/TCP 14m
node-exporter ClusterIP None <none> 9100/TCP 14m
prometheus-adapter ClusterIP 10.103.118.236 <none> 443/TCP 14m
prometheus-k8s NodePort 10.97.204.205 <none> 9090:31374/TCP 14m
prometheus-operated ClusterIP None <none> 9090/TCP 14m
prometheus-operator ClusterIP None <none> 8443/TCP 15m
# 这里查询的结果输入到grafana的url里(图下)
[root@\ k8s-m-01~/yaml]# kubectl run tests --rm -it --image=busybox:1.28.3
nslookup: can't resolve 'kubernetess'
/ # nslookup kubernetess\
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: prometheus-k8s.monitoring
Address 1: 10.97.204.205 prometheus-k8s.monitoring.svc.cluster.local

image.png

image.png

image.png
网友评论