请启用 Javascript 以查看内容

kubernetes 部署 metric-server

 ·   ·  ☕ 2 分钟  ·  ✍ CNSRE

文章链接
K8S 使用 kubectl top 看K8S监控
kubectl top 是基础命令,但是需要部署配套的组件才能获取到监控值
部署 metric-server

  • Kubernetes Metrics ServerCluster 的核心监控数据的聚合器,kubeadm 默认是不部署的。

  • Metrics ServerDashboard 等其他组件使用,是一个扩展的 APIServer,依赖于 API Aggregator。所以,在安装 Metrics Server 之前需要先在 kube-apiserver 中开启 API Aggregator

  • Metrics API 只可以查询当前的度量数据,并不保存历史数据。

  • Metrics API URI/apis/metrics.k8s.io/,在 k8s.io/metrics 下维护。

  • 必须部署 metrics-server 才能使用该 APImetrics-server 通过调用 kubelet Summary API 获取数据.

  • 不指定pod 名称,则显示命名空间下所有 pod,–containers可以显示 pod 内所有的container

  • 指标含义:

  • 和k8s中的request、limit一致,CPU单位100m=0.1 内存单位1Mi=1024Ki

  • pod的内存值是其实际使用量,也是做limit限制时判断oom的依据。pod的使用量等于其所有业务容器的总和,不包括 pause 容器,值等于cadvisr中的container_memory_working_set_bytes指标

  • node的值并不等于该node 上所有 pod 值的总和,也不等于直接在机器上运行 top 或 free 看到的值

要求

注意:使用 Metrics Server 有必备两个条件:

  • API Server 启用 Aggregator Routing 支持
  • API Server 能访问 Metrics Server Pod IP
  • 启用API Aggregator

安装 metric-server

下载yaml文件

可以通过运行以下命令下载最新的 Metrics Server 版本:

1
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

兼容性:

指标服务器 指标 API 组/版本 支持的 Kubernetes 版本
0.6.x metrics.k8s.io/v1beta1 *1.19+
0.5.x metrics.k8s.io/v1beta1 *1.8+
0.4.x metrics.k8s.io/v1beta1 *1.8+
0.3.x metrics.k8s.io/v1beta1 1.8-1.21
  • 对于 <1.16 需要--authorization-always-allow-paths=/livez,/readyz

修改镜像地址

国内无法下载 k8s.gcr.io/metrics-server/metrics-server:v0.4.1镜像
需要修改为一下镜像地址

1
cnsre/metrics-server-metrics-server:v0.4.1

添加 –kubelet-insecure-tls参数

1
2
3
4
5
6
7
8
    spec:
      containers:
      - args:
        - --cert-dir=/tmp
        - --secure-port=4443
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --kubelet-use-node-status-port
        - --kubelet-insecure-tls  # 新增内容

部署metrics-server服务

1
kubectl apply -f components.yaml

查看状态

1
2
3
[root@master ~]# kubectl -n kube-system get deploy metrics-server
NAME             READY   UP-TO-DATE   AVAILABLE   AGE
metrics-server   1/1     1            1           9m39s

测试

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[root@master ~]# kubectl  top  node
NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master   294m         8%     5971Mi          41%       
node1    198m         5%     3800Mi          26%       
[root@master ~]# kubectl  top  pods 
NAME                                     CPU(cores)   MEMORY(bytes)   
cnsre-deployment-cf6fddb9f-bvfdk         1m           1Mi             
cnsre-deployment-cf6fddb9f-d8spc         1m           1Mi             
cnsre-deployment-cf6fddb9f-nrrhz         1m           1Mi             
nfs-client-provisioner-fd74f99b4-gk8l4   4m           8Mi             
tomcat-deployment-66dc86bb8f-6xj28       2m           974Mi           
tomcat-deployment-66dc86bb8f-db66l       2m           884Mi  

文章链接

分享

CNSRE
作者
CNSRE
一个📚学习中的👨‍💻SRE运维工程师🚀🚀🚀


目录