• k8s部署kube-state-metrics组件


    k8s部署kube-state-metrics组件

    一、部署kube-state-metrics组件

    1.1、kube-state-metrics是什么

    kube-state-metrics通过监听API Server生成有关资源对象的状态指标,比如Deployment、Node、Pod,需要注意的是kube-state-metrics只是简单的提供一个metrics数据,并不会存储这些指标数据,所以我们可以使用Prometheus来抓取这些数据然后存储,主要关注的是业务相关的一些元数据,比如Deployment、Pod、副本状态等;调度了多少个replicas?现在可用的有几个?多少个Pod是running/stopped/terminated状态?Pod重启了多少次?我有多少job在运行中。

    1.2、安装kube-state-metrics组件

    1)创建sa,并对sa授权

    [root@k8s-master1 prometheus]# cat kube-state-metrics-rbac.yaml 
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: kube-state-metrics
      namespace: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: kube-state-metrics
    rules:
    - apiGroups: [""]
      resources: ["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: ClusterRoleBinding
    metadata:
      name: kube-state-metrics
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: kube-state-metrics
    subjects:
    - kind: ServiceAccount
      name: kube-state-metrics
      namespace: kube-system
      
    [root@k8s-master1 prometheus]# kubectl apply -f kube-state-metrics-rbac.yaml
    serviceaccount/kube-state-metrics created
    clusterrole.rbac.authorization.k8s.io/kube-state-metrics created
    clusterrolebinding.rbac.authorization.k8s.io/kube-state-metrics created
    

    2)安装kube-state-metrics组件

    [root@k8s-master1 prometheus]# cat kube-state-metrics-deploy.yaml 
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: kube-state-metrics
      namespace: kube-system
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: kube-state-metrics
      template:
        metadata:
          labels:
            app: kube-state-metrics
        spec:
          serviceAccountName: kube-state-metrics
          containers:
          - name: kube-state-metrics
            image: quay.io/coreos/kube-state-metrics:v1.9.0
            ports:
            - containerPort: 8080
            
    [root@k8s-master1 prometheus]# kubectl apply -f kube-state-metrics-deploy.yaml
    deployment.apps/kube-state-metrics created
    
    [root@k8s-master1 prometheus]# kubectl get pods -n kube-system -l app=kube-state-metrics
    NAME                                  READY   STATUS    RESTARTS   AGE
    kube-state-metrics-58d4957bc5-tcbq5   1/1     Running   0          28s
    

    3)创建service

    [root@k8s-master1 prometheus]# cat kube-state-metrics-svc.yaml 
    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        prometheus.io/scrape: 'true'
      name: kube-state-metrics
      namespace: kube-system
      labels:
        app: kube-state-metrics
    spec:
      ports:
      - name: kube-state-metrics
        port: 8080
        protocol: TCP
      selector:
        app: kube-state-metrics
        
    [root@k8s-master1 prometheus]# kubectl apply -f kube-state-metrics-svc.yaml
    service/kube-state-metrics created
    
    [root@k8s-master1 prometheus]# kubectl get svc -n kube-system 
    NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
    kube-dns             ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP   3d12h
    kube-state-metrics   ClusterIP   10.110.15.75     <none>        8080/TCP                 12s
    monitoring-grafana   NodePort    10.105.174.145   <none>        80:31715/TCP             11h
    

    1.3、Grafana配置

    1)导入Kubernetes Cluster (Prometheus)-1577674936972.json

    image-20210712091525726

    2)导入Kubernetes cluster monitoring (via Prometheus) (k8s 1.16)-1577691996738.json

    image-20210712091658997

    作者:Lawrence

    -------------------------------------------

    个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

    扫描上面二维码关注我
    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    .NET CORE中的配置系统
    .Net Core使用AspNetCoreRateLimit实现限流
    .NET CORE 依赖注入2
    linunx命令学习_文件命令
    .NET CORE 日志系统
    Rabbit MQ
    WPF学习
    Unity asp.net 依赖注入框架Unity
    .NET Core 依赖注入1
    备忘asp.net core使用中间件实现IP白名单访问
  • 原文地址:https://www.cnblogs.com/hujinzhong/p/15000626.html
Copyright © 2020-2023  润新知