Prometheus 监控K8S 资源状态对象

  • 官方文档:https://github.com/kubernetes/kube-state-metrics

kube-state-metrics是一个简单的服务,它监听Kubernetes API服务器并生成有关对象状态的指标。它不关注单个Kubernetes组件的运行状况,而是关注内部各种对象的运行状况,例如部署,节点和容器。

采集了k8s中各种资源对象的状态信息:

kube-state-metrics
kube_daemonset_*
kube_deployment_*
kube_job_*
kube_namespace_*
kube_node_*
kube_persistentvolumeclaim_*
kube_pod_container_*
kube_pod_*
kube_replicaset_*
kube_service_*
kube_statefulset_*

配置文件

下列是已经修改好的配置文件

  • # 主程序
  • kube-state-metrics-deployment.yaml
  • apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: kube-state-metrics
    namespace: kube-system
    labels:
    k8s-app: kube-state-metrics
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    version: v1.3.0
    spec:
    selector:
    matchLabels:
    k8s-app: kube-state-metrics
    version: v1.3.0
    replicas: 1
    template:
    metadata:
    labels:
    k8s-app: kube-state-metrics
    version: v1.3.0
    annotations:
    scheduler.alpha.kubernetes.io/critical-pod: ''
    spec:
    priorityClassName: system-cluster-critical
    serviceAccountName: kube-state-metrics
    containers:
    - name: kube-state-metrics
    # 修改为镜像地址
    image: lizhenliang/kube-state-metrics:v1.3.0
    ports:
    - name: http-metrics
    containerPort: 8080
    - name: telemetry
    containerPort: 8081
    readinessProbe:
    httpGet:
    path: /healthz
    port: 8080
    initialDelaySeconds: 5
    timeoutSeconds: 5
    - name: addon-resizer
    # 修改为镜像地址
    image: lizhenliang/addon-resizer:1.8.3
    resources:
    limits:
    cpu: 100m
    memory: 30Mi
    requests:
    cpu: 100m
    memory: 30Mi
    env:
    - name: MY_POD_NAME
    valueFrom:
    fieldRef:
    fieldPath: metadata.name
    - name: MY_POD_NAMESPACE
    valueFrom:
    fieldRef:
    fieldPath: metadata.namespace
    volumeMounts:
    - name: config-volume
    mountPath: /etc/config
    command:
    - /pod_nanny
    - --config-dir=/etc/config
    - --container=kube-state-metrics
    - --cpu=100m
    - --extra-cpu=1m
    - --memory=100Mi
    - --extra-memory=2Mi
    - --threshold=5
    - --deployment=kube-state-metrics
    volumes:
    - name: config-volume
    configMap:
    name: kube-state-metrics-config
    ---
    # Config map for resource configuration.
    apiVersion: v1
    kind: ConfigMap
    metadata:
    name: kube-state-metrics-config
    namespace: kube-system
    labels:
    k8s-app: kube-state-metrics
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    data:
    NannyConfiguration: |-
    apiVersion: nannyconfig/v1alpha1
    kind: NannyConfiguration

    配置文件

  • # APIServer授权
  • kube-state-metrics-rbac.yaml
  • apiVersion: v1
    kind: ServiceAccount
    metadata:
    name: kube-state-metrics
    namespace: kube-system
    labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
    name: kube-state-metrics
    labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    rules:
    - apiGroups: [""]
    resources:
    - configmaps
    - secrets
    - nodes
    - pods
    - services
    - resourcequotas
    - replicationcontrollers
    - limitranges
    - persistentvolumeclaims
    - persistentvolumes
    - namespaces
    - endpoints
    verbs: ["list", "watch"]
    - apiGroups: ["extensions"]
    resources:
    - daemonsets
    - deployments
    - replicasets
    verbs: ["list", "watch"]
    - apiGroups: ["apps"]
    resources:
    - statefulsets
    verbs: ["list", "watch"]
    - apiGroups: ["batch"]
    resources:
    - cronjobs
    - jobs
    verbs: ["list", "watch"]
    - apiGroups: ["autoscaling"]
    resources:
    - horizontalpodautoscalers
    verbs: ["list", "watch"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
    name: kube-state-metrics-resizer
    namespace: kube-system
    labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    rules:
    - apiGroups: [""]
    resources:
    - pods
    verbs: ["get"]
    - apiGroups: ["extensions"]
    resources:
    - deployments
    resourceNames: ["kube-state-metrics"]
    verbs: ["get", "update"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
    name: kube-state-metrics
    labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: kube-state-metrics
    subjects:
    - kind: ServiceAccount
    name: kube-state-metrics
    namespace: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
    name: kube-state-metrics
    namespace: kube-system
    labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: Role
    name: kube-state-metrics-resizer
    subjects:
    - kind: ServiceAccount
    name: kube-state-metrics
    namespace: kube-system

    配置文件

  • # 暴露端口
  • kube-state-metrics-service.yaml
  • apiVersion: v1
    kind: Service
    metadata:
    name: kube-state-metrics
    namespace: kube-system
    labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    kubernetes.io/name: "kube-state-metrics"
    annotations:
    prometheus.io/scrape: 'true'
    spec:
    ports:
    - name: http-metrics
    port: 8080
    targetPort: http-metrics
    protocol: TCP
    - name: telemetry
    port: 8081
    targetPort: telemetry
    protocol: TCP
    selector:
    k8s-app: kube-state-metrics

    配置文件

部署

1、创建容器

kubectl apply -f kube-state-metrics-rbac.yaml
kubectl apply -f kube-state-metrics-deployment.yaml
kubectl apply -f kube-state-metrics-service.yaml

2、查看创建pod

kubectl get pods -n kube-system

NAME                                 READY   STATUS    RESTARTS   AGE
coredns-64479cf49b-lsqqn 1/1 Running 0 5h26m
kube-state-metrics-6459c9f7f-wbwwt 2/2 Running 0 58s
prometheus-0 2/2 Running 0 4h12m

3、测试访问

4、Grafana可视化导入模板:6417

5、查看监控(其他资源可根据主机情况进行微调)

Prometheus 监控K8S 资源状态对象的更多相关文章

  1. Prometheus 监控K8S集群资源监控

    Prometheus 监控K8S集群中Pod 目前cAdvisor集成到了kubelet组件内,可以在kubernetes集群中每个启动了kubelet的节点使用cAdvisor提供的metrics接 ...

  2. 第15章: Prometheus监控Kubernetes资源与应用

    Prometheus监控Kubernetes资源与应用 目录 1 监控方案 2 2 监控指标 4 3 实现思路 4 4 在K8S中部署Prometheus 4 5 在K8S中部署Grafana与可视化 ...

  3. 基于prometheus监控k8s集群

    本文建立在你已经会安装prometheus服务的基础之上,如果你还不会安装,请参考:prometheus多维度监控容器 如果你还没有安装库k8s集群,情参考: 从零开始搭建基于calico的kuben ...

  4. Prometheus监控k8s集合

    Prometheus监控k8s Prometheus监控k8s(1)-Prometheus简介 Prometheus监控k8s(2)-手动部署Prometheus Prometheus监控k8s(3) ...

  5. 如何用prometheus监控k8s集群中业务pod的metrics

    一般,我们从网上看到的帖子和资料, 都是用prometheus监控k8s的各项资源, 如api server, namespace, pod, node等. 那如果是自己的业务pod上的自定义metr ...

  6. Prometheus 监控K8S Node监控

    Prometheus 监控K8S Node监控 Prometheus社区提供的NodeExporter项目可以对主机的关键度量指标进行监控,通过Kubernetes的DeamonSet可以在各个主机节 ...

  7. Prometheus监控k8s企业级应用

    Prometheus架构图 常见的镜像 pod 备注 kube-state-metric 用来收集K8S基本状态信息的监控代理 node-exporter 专门用来收集K8S运算节点基础信息,需要部署 ...

  8. Kubernetes之利用prometheus监控K8S集群

    prometheus它是一个主动拉取的数据库,在K8S中应该展示图形的grafana数据实例化要保存下来,使用分布式文件系统加动态PV,但是在本测试环境中使用本地磁盘,安装采集数据的agent使用Da ...

  9. k8s中prometheus监控k8s外mysql

    k8s外安装mysql https://www.cnblogs.com/uncleyong/p/10739530.html 配置MySQL Exporter采集MySQL监控数据 创建yaml文件:v ...

随机推荐

  1. JVM GC系列 — GC算法

    一.前言 从本篇文章开始,将开始一个新的系列JVM.JVM是一个非常庞大且复制的技术体系,但是对于程序猿的升级,走向更高阶所必要经历的,曾经也下决心要好好学习一番,然而毅力不足都中途放弃. GC的作用 ...

  2. bootstrap 自定义模态窗口

    $(".classname").click(function () { $('#mymodel').modal('show'); alert('模态框打开了'); }); $('# ...

  3. 天天向上的力量python(举一反三)

    天天向上的力量python实例(举一反三) 实例1: 一年365天,以第1天的能力值为基数,记为1.0,当好好学习时能力值相比前一天提高0.1%,没有学习实能力值相比前一天下降0.1%. 问:每天努力 ...

  4. Java电商项目-3.使用VSFTPD_Nginx完成商品新增

    目录 到Github获取源码请点击此处 一. 商品类目查询 二. FTP图片服务器的搭建 图片上传思路介绍 Linux中安装vsftpd 接着配置ftp服务, 让外网可以访问 Http服务器搭建 Ng ...

  5. Spring Boot配置过滤器的两种方式

    过滤器(Filter)是Servlet中常用的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,常用的场景有登录校验.权限控制.敏感词过滤等,下面介绍下Spring Boot配置过 ...

  6. char.IsWhiteSpace(str,num),TimeSpan

    IsWhiteSpace(String, Int32) 指示指定字符串中位于指定位置处的字符是否属于空格类别. TimeSpan TimeSpan ts=new TimeSpan(4,30,0); C ...

  7. 如何让Python爬虫一天抓取100万张网页

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 王平 源自:猿人学Python PS:如有需要Python学习资料的 ...

  8. PlayJava Day006

    今日所学: /* 2019.08.19开始学习,此为补档. */ 构造方法没有返回值(即return为空). this:实例(对象)的引用. JVM:①static方法区:存静态数据   ②栈区:引用 ...

  9. 漫谈golang设计模式 工厂模式

    工厂模式 意义:创建过程交给专门的工厂子类去完成.定义一个抽象的工厂类,再定义具体的工厂类来生成子类等,它们实现在抽象按钮工厂类中定义的方法.这种抽象化的结果使这种结构可以在不修改具体工厂类的情况下引 ...

  10. 重新安装和更新所有的 nuget包

    重新安装指定项目中所有的 nuget 包 Update-Package -ProjectName MyProject –reinstall 更新指定项目中所有的 nuget 包 Update-Pack ...