05.k8s集群部署Kube-Prome
Last updated
Was this helpful?
Last updated
Was this helpful?
组件
版本
prometheus-operator
release-0.7
cat /etc/hosts
10.140.0.4 master
10.140.0.5 node01
10.140.0.6 node02
10.140.0.7 node03
github地址
https://github.com/coreos/kube-prometheus.git
unzip kube-prometheus-release-0.7.zip
cd kube-prometheus-release-0.7/manifests/
mkdir /root/prometheus
cp -r /root/kube-prometheus-release-0.7/manifests/* /root/prometheus/
cd /root/prometheus/
mkdir -p operator node-exporter alertmanager grafana kube-state-metrics prometheus serviceMonitor adapter
mv *-serviceMonitor* serviceMonitor/
mv grafana-* grafana/
mv kube-state-metrics-* kube-state-metrics/
mv alertmanager-* alertmanager/
mv node-exporter-* node-exporter/
mv prometheus-adapter* adapter/
mv prometheus-* prometheus/
cd prometheus/prometheus/
这边用的是openebs自动提供的local-pv
vim prometheus-prometheus.yaml
storage:
volumeClaimTemplate:
spec:
storageClassName: openebs-hostpath
resources:
requests:
storage: 20Gi
为了以后监控etcd,提前加入etcd的密钥
ls /etc/kubernetes/pki/etcd
先将需要使用的证书通过secret对象保存到集群中
kubectl create ns monitoring
kubectl -n monitoring create secret generic etcd-certs \
--from-file=/etc/kubernetes/pki/etcd/healthcheck-client.crt \
--from-file=/etc/kubernetes/pki/etcd/healthcheck-client.key \
--from-file=/etc/kubernetes/pki/etcd/ca.crt
secrets:
- etcd-certs
通过retention
参数进行修改,在prometheus.spec
下填写
retention: 14d
watchdog只是告警的测试,用来查看告警是否成功,一般测试完成后需要删除
cd /root/prometheus/prometheus/
vim prometheus-rules.yaml
删掉watchdog告警
默认没有,需要自己建立
先查看master节点上的端口
cat > prom-svc.yaml << EOF
apiVersion: v1
kind: Service
metadata:
namespace: kube-system
name: kube-controller-manager
labels:
k8s-app: kube-controller-manager
spec:
type: ClusterIP
clusterIP: None
ports:
- name: https-metrics
port: 10257
targetPort: 10257
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
namespace: kube-system
name: kube-scheduler
labels:
k8s-app: kube-scheduler
spec:
type: ClusterIP
clusterIP: None
ports:
- name: https-metrics
port: 10259
targetPort: 10259
protocol: TCP
---
apiVersion: v1
kind: Endpoints
metadata:
labels:
k8s-app: kube-controller-manager
name: kube-controller-manager
namespace: kube-system
subsets:
- addresses:
- ip: 10.140.0.4
ports:
- name: https-metrics
port: 10257
protocol: TCP
---
apiVersion: v1
kind: Endpoints
metadata:
labels:
k8s-app: kube-scheduler
name: kube-scheduler
namespace: kube-system
subsets:
- addresses:
- ip: 10.140.0.4
ports:
- name: https-metrics
port: 10259
protocol: TCP
EOF
为了配置落盘,添加pv
cat > grafana-pvc.yaml << EOF
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: grafana-pvc
namespace: monitoring
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: openebs-hostpath
EOF
kubectl apply -f grafana-pvc.yaml
修改grafana配置
cd /root/prometheus/grafana/
vim grafana-deployment.yaml
cd /root/prometheus/
kubectl apply -f setup/
kubectl apply -f adapter/
kubectl apply -f alertmanager/
kubectl apply -f node-exporter/
kubectl apply -f kube-state-metrics/
kubectl apply -f grafana/
kubectl apply -f prometheus/
kubectl apply -f serviceMonitor/
cat > prometheus-ingress.yaml << EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: prometheus.com
namespace: monitoring
spec:
rules:
- host: grafana.tk8s.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: grafana
port:
number: 3000
- host: prometheus.tk8s.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: prometheus-k8s
port:
number: 9090
- host: alertmanager.tk8s.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: alertmanager-main
port:
number: 9093
EOF
kubectl apply -f prometheus-ingress.yaml
kubectl get svc -n ingress-nginx