Kubernetes之kubeadm集群监控篇—prometheus 部署

配置文件编辑

复制代码
# cat prometheus-config.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: kube-prom
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: kube-prom
data:
  prometheus.yml: |
    global:
      scrape_interval:     10s
      evaluation_interval: 10s

    scrape_configs:
    - job_name: 'prometheus'
      static_configs:
        - targets: ['localhost:9090']

    # https://github.com/prometheus/prometheus/blob/release-2.21/documentation/examples/prometheus-kubernetes.yml
    - job_name: 'kubernetes-apiservers'
      kubernetes_sd_configs:
      - role: endpoints
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      relabel_configs:
      - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
        action: keep
        regex: default;kubernetes;https

    - job_name: 'kubernetes-nodes'
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - source_labels: [__address__]
        regex: (.*):10250
        replacement: ${1}:9100
        action: replace
        target_label: __address__
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)

    - job_name: 'kubernetes-pods'
      kubernetes_sd_configs:
      - role: pod
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      relabel_configs:
      - action: labelmap
        regex: __meta_kubernetes_pod_label_(.+)

    - job_name: 'kubernetes-cadvisor'
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - target_label: __address__
        replacement: kubernetes.default.svc:443
      - source_labels: [__meta_kubernetes_node_name]
        regex: (.+)
        replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
        target_label: __metrics_path__
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)

部署

复制代码
# kubectl apply -f prometheus-config.yaml 
namespace/kube-prom created
configmap/prometheus-config created

pod yaml文件编辑

复制代码
# cat prometheus.yaml 
apiVersion: v1
kind: Namespace
metadata:
  name: kube-prom
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: prometheus
  namespace: kube-prom
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: prometheus
rules:
- apiGroups: [""]
  resources:
  - nodes
  - nodes/proxy
  - services
  - endpoints
  - pods
  verbs: ["get", "list", "watch"]
- apiGroups: [""]
  resources:
  - configmaps
  - nodes/metrics
  verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
  verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: prometheus
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: prometheus
subjects:
- kind: ServiceAccount
  name: prometheus
  namespace: kube-prom
---
apiVersion: apps/v1 
kind: Deployment
metadata:
  labels:
    name: prometheus
  name: prometheus
  namespace: kube-prom
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus 
  template:
    metadata:
      labels:
        app: prometheus
    spec:
      nodeSelector:
        disktype: ssd
      serviceAccountName: prometheus
      hostAliases:
      - ip: 192.168.12.9
        hostnames:
        - "k8s-master"
      - ip: 192.168.12.16
        hostnames:
        - "k8s-worker01"
      - ip: 192.168.12.17
        hostnames:
        - "k8s-worker02"
      containers:
      - image: registry.cn-beijing.aliyuncs.com/mayaping/prometheus:v2.0.0
        name: prometheus
        command:
        - "/bin/prometheus"
        args:
        - "--config.file=/etc/prometheus/prometheus.yml"
        - "--storage.tsdb.path=/prometheus"
        - "--storage.tsdb.retention=72h"
        - "--web.enable-admin-api"
        - "--web.enable-lifecycle"
        securityContext:
          privileged: true
          runAsUser: 0
        ports:
        - containerPort: 9090
          protocol: TCP
        volumeMounts:
        - mountPath: "/prometheus"
          name: data
        - mountPath: "/etc/prometheus"
          name: config-volume
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            cpu: 5000m
            memory: 2500Mi
      volumes:
      - name: data
        hostPath:
          path: /opt/data/prometheus
      - name: config-volume
        configMap:
          name: prometheus-config
---
apiVersion: v1
kind: Service
metadata:
  name: prometheus
  namespace: kube-prom
  labels:
    app: prometheus
spec:
  ports:
  - name: http
    port: 9090
    protocol: TCP
    targetPort: 9090
    nodePort: 9090
  selector:
    app: prometheus
  type: NodePort

hostAliases:

部署

复制代码
# kubectl apply -f prometheus.yaml 
namespace/kube-prom unchanged
serviceaccount/prometheus created
clusterrole.rbac.authorization.k8s.io/prometheus created
clusterrolebinding.rbac.authorization.k8s.io/prometheus created
deployment.apps/prometheus created
service/prometheus created

访问测试

复制代码
# curl http://192.168.12.9:9090
<a href="/graph">Found</a>.

查看服务启动情况

复制代码
# kubectl get pods --namespace kube-prom 
NAME                          READY   STATUS    RESTARTS   AGE
prometheus-7749bcdfd8-g2hmx   1/1     Running   0          60s
相关推荐
alden_ygq2 小时前
Kubernetes生产实战(十九):镜像拉取失败排查处理
云原生·容器·kubernetes
alden_ygq2 小时前
Kubernetes排错(十四):Pod状态异常排查手册
云原生·容器·kubernetes
hie988943 小时前
k8s存储类型:emptyDir、hostPath、nfs、pvc及存储类storageclass的静态/动态创建pv
云原生·容器·kubernetes
alden_ygq6 小时前
Kubernetes生产实战(十四):Secret高级使用模式与安全实践指南
java·安全·kubernetes
小马爱打代码13 小时前
K8S - 蓝绿发布实战 - Argo Rollouts 零停机方案解析
云原生·容器·kubernetes
A尘埃17 小时前
K8S有状态服务部署(MySQL、Redis、ES、RabbitMQ、Nacos、ZipKin、Sentinel)
redis·mysql·kubernetes
维运20 小时前
【kubernetes】通过Sealos 命令行工具一键部署k8s集群
云原生·容器·kubernetes
bst@微胖子20 小时前
K8S扩缩容及滚动更新和回滚
云原生·容器·kubernetes
Mr.小怪1 天前
K8s网络从0到1
网络·kubernetes·php
剑哥在胡说1 天前
高并发PHP部署演进:从虚拟机到K8S的DevOps实践优化
kubernetes·php·devops