首页
学习
活动
专区
圈层
工具
发布

prometheus监控安装使用

一、安装

1.1、创建CRD以及namespace
代码语言:javascript
复制
# 官方地址: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
​
1.2、修改持久化配置
代码语言:javascript
复制
# 修改文件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
1.3、完成安装
代码语言:javascript
复制
# 创建
kubectl apply -f manifests/
1.4、配置monitoring ingress
代码语言:javascript
复制
# 配置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,初次登陆后修改
1.5、处理现有警告
代码语言:javascript
复制
# 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
下一篇
举报
领券