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
相关文章
|
4天前
|
存储 运维 Kubernetes
Kubernetes 集群的监控与维护策略
【4月更文挑战第23天】 在微服务架构日益盛行的当下,容器编排工具如 Kubernetes 成为了运维工作的重要环节。然而,随着集群规模的增长和复杂性的提升,如何确保 Kubernetes 集群的高效稳定运行成为了一大挑战。本文将深入探讨 Kubernetes 集群的监控要点、常见问题及解决方案,并提出一系列切实可行的维护策略,旨在帮助运维人员有效管理和维护 Kubernetes 环境,保障服务的持续可用性和性能优化。
|
26天前
|
运维 Kubernetes 监控
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
34 0
|
29天前
|
Kubernetes 网络协议 应用服务中间件
K8S二进制部署实践-1.15.5
K8S二进制部署实践-1.15.5
34 0
|
1月前
|
存储 Kubernetes 负载均衡
Kubernetes的“厨房”:架构是菜谱,组件是厨具,资源对象是食材(下)
本文深入探讨了Kubernetes(K8s)的架构、核心组件以及资源对象。Kubernetes作为一个开源的容器编排系统,通过其独特的架构设计和丰富的组件,实现了对容器化应用程序的高效管理和扩展。通过本文的介绍,读者可以深入了解Kubernetes的架构、核心组件以及资源对象,从而更好地应用和管理容器化应用程序。Kubernetes的灵活性和可扩展性使得它成为容器编排领域的领先者,为企业提供了强大的容器运行环境。
|
2月前
|
运维
计算巢如何使用fluxcd在ack部署helm chart
为支持helm服务运维管理功能,现在改用fluxcd的方式进行helm chart部署,这里计算巢对fluxcd进行部署helm chart的过程进行了封装,封装成了ROS公共模块MODULE::ACS::ComputeNest::FluxOciHelmDeploy,下面将主要介绍下怎么使用这个模块在计算巢中进行Helm Chart的部署。
36 3
|
1月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【2月更文挑战第29天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的提升,有效的监控和日志管理变得至关重要。本文将探讨构建高效 Kubernetes 集群监控系统的策略,以及实施日志聚合和分析的最佳实践。通过引入如 Prometheus 和 Fluentd 等开源工具,我们旨在为运维专家提供一套完整的解决方案,以保障系统的稳定性和可靠性。
|
30天前
|
Kubernetes 流计算 Perl
在Rancher K8s上部署Flink时,TaskManager连接不上并不断重启可能是由多种原因导致的
在Rancher K8s上部署Flink时,TaskManager连接不上并不断重启可能是由多种原因导致的
34 7
|
13天前
|
Kubernetes 搜索推荐 Docker
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
58 17
|
25天前
|
Kubernetes Ubuntu 应用服务中间件
Ubuntu 22.04 利用kubeadm方式部署Kubernetes(v1.28.2版本)
Ubuntu 22.04 利用kubeadm方式部署Kubernetes(v1.28.2版本)
104 0
|
26天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
18 0