05.k8s集群部署Kube-Prome

组件版本

组件

版本

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
image.png
unzip kube-prometheus-release-0.7.zip
cd kube-prometheus-release-0.7/manifests/
image.png

分类

mkdir /root/prometheus
cp -r /root/kube-prometheus-release-0.7/manifests/* /root/prometheus/
cd /root/prometheus/
image.png
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/
image.png

修改prometheus配置文件

cd prometheus/prometheus/
image.png

添加pv存储

这边用的是openebs自动提供的local-pv

image.png
vim prometheus-prometheus.yaml
  storage:
    volumeClaimTemplate:
      spec:
        storageClassName: openebs-hostpath
        resources:
          requests:
            storage: 20Gi
image.png

添加etcd密钥

为了以后监控etcd,提前加入etcd的密钥

ls /etc/kubernetes/pki/etcd
image.png

先将需要使用的证书通过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 
image.png
  secrets:
  - etcd-certs
image.png

添加过期时长

通过retention参数进行修改,在prometheus.spec下填写

retention: 14d
image.png

去除watchdog报警规则(可选)

watchdog只是告警的测试,用来查看告警是否成功,一般测试完成后需要删除

cd /root/prometheus/prometheus/
vim prometheus-rules.yaml

删掉watchdog告警

image.png

创建kube-controller-manager和kube-scheduler的svc

默认没有,需要自己建立

先查看master节点上的端口

image.png
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
image.png

grafana添加pv存储

为了配置落盘,添加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
image.png

修改grafana配置

cd /root/prometheus/grafana/
vim grafana-deployment.yaml
image.png
image.png

安装

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/

查看部署情况

image.png

创建ingress

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 
image.png
image.png

Last updated

Was this helpful?