# 官方地址:https://github.com/prometheus-operator/kube-prometheus
# 下载对应版本安装包
https://github.com/prometheus-operator/kube-prometheus/tree/v0.10.0
# 创建operator
kubectl apply --server-side -f manifests/setup
# 修改文件prometheus-prometheus.yaml
# 数据持久化
vim prometheus-prometheus.yaml
storage:
volumeClaimTemplate:
spec:
storageClassName: rook-ceph-block
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 20Gi
# 修改文件grafana-deployment.yaml
# 数据持久化
vim grafana-deployment.yaml
# 新建pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: grafana-pvc
namespace: monitoring
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: rook-ceph-block
# pvc绑定
- name: grafana-storage
persistentVolumeClaim:
claimName: grafana-pvc
# 创建
kubectl apply -f manifests/
# 配置monitoring ingress
# 生成https证书
kubectl create secret tls test-secret --cert=www.test.com.crt --key=www.test.com.key -n monitoring
# 编辑ingress文件
vim monitoring-ingress-https.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana
namespace: monitoring
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- grafana.test.com
secretName: test-secret
rules:
- host: grafana.test.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: grafana
port:
name: http
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: prometheus
namespace: monitoring
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- prometheus.test.com
secretName: test-secret
rules:
- host: prometheus.test.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: prometheus-k8s
port:
name: web
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alertmanager
namespace: monitoring
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- alertmanager.test.com
secretName: test-secret
rules:
- host: alertmanager.test.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: alertmanager-main
port:
name: web
# 创建ingress
kubectl apply -f monitoring-ingress-https.yaml
# grafana默认密码admin/admin,初次登陆后修改
# kube-scheduler
vim kube-scheduler-svc-ep.yaml
apiVersion: v1
kind: Service
metadata:
name: kube-scheduler
namespace: kube-system
labels:
k8s-app: kube-scheduler
app.kubernetes.io/name: kube-scheduler
spec:
type: ClusterIP
clusterIP: None
ports:
- name: https-metrics
port: 10259
targetPort: 10259
protocol: TCP
---
apiVersion: v1
kind: Endpoints
metadata:
name: kube-scheduler
namespace: kube-system
labels:
k8s-app: kube-scheduler
app.kubernetes.io/name: kube-scheduler
subsets:
- addresses:
- ip: 192.168.31.181
targetRef:
kind: Node
name: k8s-master01
uid: 69c15b18-fd73-4de0-949b-a2a7f2e26984
- ip: 192.168.31.182
targetRef:
kind: Node
name: k8s-master02
uid: de34705b-3c3f-4648-b00b-e90321b69fc9
- ip: 192.168.31.183
targetRef:
kind: Node
name: k8s-master03
uid: ba97e111-6372-45b0-972c-99445214e42c
ports:
- name: https-metrics
port: 10259
protocol: TCP
# kube-controller-manager
vim kube-controller-manager-svc-ep.yaml
apiVersion: v1
kind: Service
metadata:
name: kube-controller-manager
namespace: kube-system
labels:
k8s-app: kube-controller-manager
app.kubernetes.io/name: kube-controller-manager
spec:
type: ClusterIP
clusterIP: None
ports:
- name: https-metrics
port: 10257
targetPort: 10257
protocol: TCP
---
apiVersion: v1
kind: Endpoints
metadata:
name: kube-controller-manager
namespace: kube-system
labels:
k8s-app: kube-controller-manager
app.kubernetes.io/name: kube-controller-manager
subsets:
- addresses:
- ip: 192.168.31.181
targetRef:
kind: Node
name: k8s-master01
uid: 69c15b18-fd73-4de0-949b-a2a7f2e26984
- ip: 192.168.31.182
targetRef:
kind: Node
name: k8s-master02
uid: de34705b-3c3f-4648-b00b-e90321b69fc9
- ip: 192.168.31.183
targetRef:
kind: Node
name: k8s-master03
uid: ba97e111-6372-45b0-972c-99445214e42c
ports:
- name: https-metrics
port: 10257
protocol: TCP