k8s集群监控(2)-部署kube-state-metrics对资源对象监控

简介: kube-state-metrics对k8s集群中的资源对象监控,包括 pod 、 deployment, service



环境准备



系统Centos 7.9

k8s集群:

版本:1.21.5

节点:

192.168.10.201  master

192.168.10.202  work




image.png



部署相关配置文件


kube-state-metrics-rbac.yaml


apiVersion:v1kind:ServiceAccountmetadata:name:kube-state-metricsnamespace:kube-systemlabels:kubernetes.io/cluster-service:"true"addonmanager.kubernetes.io/mode:Reconcile---apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:name:kube-state-metricslabels:kubernetes.io/cluster-service:"true"addonmanager.kubernetes.io/mode:Reconcilerules:-apiGroups:[""]resources:-configmaps-secrets-nodes-pods-services-resourcequotas-replicationcontrollers-limitranges-persistentvolumeclaims-persistentvolumes-namespaces-endpointsverbs:["list","watch"]-apiGroups:["apps"]resources:-statefulsets-daemonsets-deployments-replicasetsverbs:["list","watch"]-apiGroups:["batch"]resources:-cronjobs-jobsverbs:["list","watch"]-apiGroups:["autoscaling"]resources:-horizontalpodautoscalersverbs:["list","watch"]-apiGroups:["networking.k8s.io","extensions"]resources:-ingressesverbs:["list","watch"]-apiGroups:["storage.k8s.io"]resources:-storageclassesverbs:["list","watch"]-apiGroups:["certificates.k8s.io"]resources:-certificatesigningrequestsverbs:["list","watch"]-apiGroups:["policy"]resources:-poddisruptionbudgetsverbs:["list","watch"]---apiVersion:rbac.authorization.k8s.io/v1kind:Rolemetadata:name:kube-state-metrics-resizernamespace:kube-systemlabels:kubernetes.io/cluster-service:"true"addonmanager.kubernetes.io/mode:Reconcilerules:-apiGroups:[""]resources:-podsverbs:["get"]-apiGroups:["extensions","apps"]resources:-deploymentsresourceNames:["kube-state-metrics"]verbs:["get","update"]---apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRoleBindingmetadata:name:kube-state-metricslabels:kubernetes.io/cluster-service:"true"addonmanager.kubernetes.io/mode:ReconcileroleRef:apiGroup:rbac.authorization.k8s.iokind:ClusterRolename:kube-state-metricssubjects:-kind:ServiceAccountname:kube-state-metricsnamespace:kube-system---apiVersion:rbac.authorization.k8s.io/v1kind:RoleBindingmetadata:name:kube-state-metricsnamespace:kube-systemlabels:kubernetes.io/cluster-service:"true"addonmanager.kubernetes.io/mode:ReconcileroleRef:apiGroup:rbac.authorization.k8s.iokind:Rolename:kube-state-metrics-resizersubjects:-kind:ServiceAccountname:kube-state-metricsnamespace:kube-system



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.8.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.6        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
---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



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


创建 kube-state-metrics 服务


kubectlapply-f.


查看服务启动状态

image.png



打开prometheus控制台


image.png



相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
15小时前
|
运维 Prometheus 监控
Kubernetes 集群监控与性能优化实践
【5月更文挑战第14天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的增加,监控系统的性能及稳定性变得至关重要。本文将深入探讨 Kubernetes 集群监控的重要性,介绍常用监控工具,并分享一系列针对集群性能优化的实践策略,帮助运维工程师确保服务的高可用性和优越性能。
|
1天前
|
Kubernetes 应用服务中间件 Docker
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
|
1天前
|
运维 Kubernetes Linux
Kubernetes详解(九)——资源配置清单创建Pod实战
Kubernetes详解(九)——资源配置清单创建Pod实战
10 2
|
1天前
|
JSON Kubernetes API
Kubernetes详解(八)——Kubernetes资源配置清单
Kubernetes详解(八)——Kubernetes资源配置清单
11 2
|
1天前
|
运维 Kubernetes Linux
Kubernetes详解(七)——Service对象部署和应用
Kubernetes详解(七)——Service对象部署和应用
8 3
|
3天前
|
存储 运维 监控
Kubernetes 集群的持续监控与性能优化策略
【5月更文挑战第11天】在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。随着其在不同规模企业的广泛采用,如何确保 Kubernetes 集群的高效稳定运行变得至关重要。本文将探讨一套系统的 Kubernetes 集群监控方法,并结合实践经验分享针对性能瓶颈的优化策略。通过实时监控、日志分析与定期审计的结合,旨在帮助运维人员快速定位问题并提出解决方案,从而提升系统的整体表现。
|
4天前
|
Kubernetes 应用服务中间件 nginx
Kubernetes详解(六)——Pod对象部署和应用
在Kubernetes系列中,本文聚焦Pod对象的部署和管理。首先,通过`kubectl run`命令创建Pod,如`kubectl run pod-test --image=nginx:1.12 --port=80 --replicas=1`。接着,使用`kubectl get deployment`或`kubectl get pods`查看Pod信息,添加`-o wide`参数获取详细详情。然后,利用Pod的IP地址进行访问。最后,用`kubectl delete pods [Pod名]`删除Pod,但因Controller控制器,删除后Pod可能自动重建。了解更多细节,请参阅原文链接。
11 5
|
4天前
|
存储 Kubernetes 调度
Kubernetes详解(五)——Kubernetes核心对象
Kubernetes详解(五)——Kubernetes核心对象
11 4
|
4天前
|
Kubernetes Linux Docker
Kubernetes详解(四)——基于kubeadm的Kubernetes部署
Kubernetes详解(四)——基于kubeadm的Kubernetes部署
15 2
|
5天前
|
存储 Kubernetes 关系型数据库
Kubernetes详解(二)——Kubernetes结构与资源对象
Kubernetes详解(二)——Kubernetes结构与资源对象
14 0