zoukankan      html  css  js  c++  java
  • Kubernetes监控集群资源利用率(Metrics-server+cAdvisor)

    了解Metrics之前先了解kubectl自带的一个top命令,它是显示资源利用率的,包括cpu,内存和存储。
    image.png

    通过kubectl top --help了解到top命令有两个子命令,支持pod和node这两个维度去查看。

    image.png

    当我们使用kubectl top nodekubectl top pod命令时报错:

    image.png

    其实这个原因是top命令是需要调用一个资源的,该资源恰好提供了cpu或者内存的信息,而提供这个资源的就是报错信息中所提到的heapster,这个heapster是一个k8s早期的监控组件,为top提供数据来源,之后这个组件被完全弃用,官方社区研发了一个新的组件来替换它,替代者就是Metrics-server,它的功能就是一个聚合器,Metrics-server并不直接采集cpu等监控数据,它是从cadvisor组件中去聚合响应的监控数据,cadvisor已经内置到k8s agent中了,所以我们只需要安装Metrics-server即可

    image.png

    部署方式

    # 下载所需文件
    git clone https://github.com/kubernetes-incubator/metrics-server
    cd metrics-server/deploy/kubernetes
    # 编辑替换源地址并添加参数
    vi metrics-server-deployment.yaml
    
    # 修改镜像地址并添加最后两行参数
    ···
          containers:
          - name: metrics-server
            image: lizhenliang/metrics-server-amd64:v0.3.1
            imagePullPolicy: IfNotPresent
            args:
              - --cert-dir=/tmp
              - --secure-port=4443
              - --kubelet-insecure-tls
              - --kubelet-preferred-address-types=InternalIP
    ···
    
    # 应用所有 yaml文件
    kubectl apply -f .
    # 查看metrics-server状态
    kubectl get pod -n kube-system
    # 查看metrics-server是否注册到apiservice中
    kubectl get apiservice
    

    添加参数说明:

    • --kubelet-insecure-tls:让metrics-server以非https安全方式连接kubectl
    • --kubelet-preferred-address-types:让metrics-server不用主机名而使用节点实际的IP地址连接kubelet

    若网络访问慢,也可直接下载本站压缩包,点击下载

    wget https://leif.fun/downloads/kubernetes/metrics-server.zip
    unzip metrics-server.zip
    cd metrics-server
    kubectl apply -f .
    

    文件功能介绍:

    • metrics-server-deployment.yaml:部署metrics服务
    • metrics-server-service.yaml:暴露metrics服务
    • metrics-apiservice.yaml:把metrics服务注册到k8s的api中
    • 其他文件:授权访问

    接下来就可以正常使用top命令查看资源状态了

    image.png

    注意:1000m=1c

    总结

    监控流程:kubectl top -> apiserver-> metrics-server pod -> kubectl(cadvisor)

  • 相关阅读:
    c#dalegate invoke及AsyncCallback使用
    wpf ProgressBar使用
    gridcontrol如何根据值来动态设置某一行的颜色
    JS判断客户端是否是iOS或者Android
    React Native视频播放(iOS)
    js中Math()函数&&数据类型转换
    在Mac OS X上安装Ionic
    Umbraco列表分页
    angularJs中图表功能(有集成框架)-angular-flot
    React Native开发环境搭建
  • 原文地址:https://www.cnblogs.com/Python-K8S/p/14291425.html
Copyright © 2011-2022 走看看