1.k8s部署Prometheus几种方式
1.1.写yaml部署脚本,这种方式部署太麻烦,细节太多,不建议
1.2.使用开源项目prometheus-operator部署
prometheus-operator只包含一个operator,该operator管理操作Prometheus和Alertmanager集群,项目地址:
https://github.com/prometheus-operator/prometheus-operator
1.3.使用开源项目kube-prometheus部署
kube-prometheus以Prometheus Operator和一系列manifests文件为基础,以帮助你快速在kubernetes集群中部署Prometheus监控系统,项目地址:https://github.com/prometheus-operator/kube-prometheus
2.部署 kube-prometheus
2.1.下载Kube-Prometheus项目
#我用的版本是 v0.10.0,根据k8s版本选择合适的版本
https://github.com/prometheus-operator/kube-prometheus/releases/tag/v0.10.0
2.2 安装
#GitHub上已经给出了安装方法
cd /opt/basic-server-charts/prometheus
wget https://github.com/prometheus-operator/kube-prometheus/archive/refs/tags/v0.10.0.tar.gz
解压并 cd kube-prometheus-0.10.0
kubectl apply --server-side -f manifests/setup
kubectl wait \
--for condition=Established \
--all CustomResourceDefinition \
--namespace=monitoring
kubectl apply -f manifests/
# 失败的镜像
k8s.gcr.io/prometheus-adapter/prometheus-adapter:v0.9.1
k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.3.0
# 平替镜像
docker pull lbbi/prometheus-adapter:v0.9.1
docker pull bitnami/kube-state-metrics
# 打标签替换
docker tag lbbi/prometheus-adapter:v0.9.1 k8s.gcr.io/prometheus-adapter/prometheus-adapter:v0.9.1
2.3 安装完成,看下资源情况
kubectl get all -n monitoring
NAME READY STATUS RESTARTS AGE
pod/alertmanager-main-0 2/2 Running 0 63m
pod/alertmanager-main-1 2/2 Running 0 63m
pod/alertmanager-main-2 2/2 Running 0 63m
pod/blackbox-exporter-6798fb5bb4-l28nm 3/3 Running 0 64m
pod/grafana-78d8cfccff-h47xf 1/1 Running 0 64m
pod/kube-state-metrics-5fcb7d6fcb-vww9n 3/3 Running 0 54m
pod/node-exporter-cl5lf 2/2 Running 0 64m
pod/node-exporter-pj2vn 2/2 Running 0 64m
pod/prometheus-adapter-7dc46dd46d-dv9t8 1/1 Running 0 64m
pod/prometheus-adapter-7dc46dd46d-gjwxl 1/1 Running 0 64m
pod/prometheus-k8s-0 2/2 Running 0 63m
pod/prometheus-k8s-1 2/2 Running 0 29m
pod/prometheus-operator-7ddc6877d5-f8lps 2/2 Running 0 64m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/alertmanager-main ClusterIP 192.168.51.97 <none> 9093/TCP,8080/TCP 64m
service/alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 63m
service/blackbox-exporter ClusterIP 192.168.202.139 <none> 9115/TCP,19115/TCP 64m
service/grafana ClusterIP 192.168.105.16 <none> 3000/TCP 64m
service/kube-state-metrics ClusterIP None <none> 8443/TCP,9443/TCP 64m
service/node-exporter ClusterIP None <none> 9100/TCP 64m
service/prometheus-adapter ClusterIP 192.168.12.246 <none> 443/TCP 64m
service/prometheus-k8s ClusterIP 192.168.107.131 <none> 9090/TCP,8080/TCP 64m
service/prometheus-operated ClusterIP None <none> 9090/TCP 63m
service/prometheus-operator ClusterIP None <none> 8443/TCP 64m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/node-exporter 2 2 2 2 2 kubernetes.io/os=linux 64m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/blackbox-exporter 1/1 1 1 64m
deployment.apps/grafana 1/1 1 1 64m
deployment.apps/kube-state-metrics 1/1 1 1 64m
deployment.apps/prometheus-adapter 2/2 2 2 64m
deployment.apps/prometheus-operator 1/1 1 1 64m
NAME DESIRED CURRENT READY AGE
replicaset.apps/blackbox-exporter-6798fb5bb4 1 1 1 64m
replicaset.apps/grafana-78d8cfccff 1 1 1 64m
replicaset.apps/kube-state-metrics-5fcb7d6fcb 1 1 1 64m
replicaset.apps/prometheus-adapter-7dc46dd46d 2 2 2 64m
replicaset.apps/prometheus-operator-7ddc6877d5 1 1 1 64m
NAME READY AGE
statefulset.apps/alertmanager-main 3/3 63m
statefulset.apps/prometheus-k8s 2/2 63m
2.4 创建ingress访问web
prometheus
cat prometheus-server.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: prometheus-k8s
namespace: monitoring
spec:
rules:
- host: prometheus.test.cn
http:
paths:
- backend:
service:
name: prometheus-k8s
port:
number: 9090
path: /
pathType: ImplementationSpecific
grafana
cat grafana.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana
namespace: monitoring
spec:
rules:
- host: grafana.test.cn
http:
paths:
- backend:
service:
name: grafana
port:
number: 3000
path: /
pathType: ImplementationSpecific
alertmanager
cat alertmanager.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alertmanager
namespace: monitoring
spec:
rules:
- host: alertmanager.test.cn
http:
paths:
- backend:
service:
name: alertmanager-main
port:
number: 9093
path: /
pathType: ImplementationSpecific
2.5 卸载方式
kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup
网友评论