Kubernetes上安装Metrics-Server

参考链接:GitHub - kubernetes-sigs/metrics-server at v0.6.1 

一、操作场景

metrics-server 可实现 Kubernetes 的 Resource Metrics API(metrics.k8s.io),通过此 API 可以查询 Pod 与 Node 的部分监控指标,Pod 的监控指标用于 HPA、VPA 与** kubectl top pods** 命令,而 Node 指标目前只用于 kubectl top nodes 命令。容器服务 某些k8s发行版 自带 Resource Metrics API 的实现,指向 hpa-metrics-server,且目前提供 Pod 的监控指标。

将 metrics-server 安装到集群后,可以通过 **kubectl top nodes **获取节点的监控概览,以替换 Resource Metrics API 的实现。容器服务控制台创建的 HPA 不会用到 Resource Metrics,仅使用 Custom Metrics,因此安装 metrics-server 不会影响在 Kubernetes 控制台创建的 HPA。本文将介绍如何在 Kubernetes 上安装 metrics-server。

二、操作步骤

2.1 下载 yaml 部署文件

执行以下命令,下载 metrics-server 官方的部署 yaml:

wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Metrics ServerMetrics API group/versionSupported Kubernetes version
0.6.xmetrics.k8s.io/v1beta1*1.19+
0.5.xmetrics.k8s.io/v1beta1*1.8+
0.4.xmetrics.k8s.io/v1beta1*1.8+
0.3.xmetrics.k8s.io/v1beta11.8-1.21

2.2 修改 metrics-server 启动参数

metrics-server 会请求每台节点的 kubelet 接口来获取监控数据,接口通过 HTTPS 暴露,但 Kubernetes 节点的 kubelet 使用的是自签证书,若 metrics-server 直接请求 kubelet 接口,将产生证书校验失败的错误,因此需要在 components.yaml 文件中加上 --kubelet-insecure-tls 启动参数。

且由于 metrics-server 官方镜像仓库存储在 k8s.gcr.io ,国内可能无法直接拉取,您可以自行同步到 CCR 或使用已同步的镜像 ccr.ccs.tencentyun.com/mirrors/metrics-server:v0.5.0。

components.yaml 文件修改示例如下:

containers:
- args:
  - --cert-dir=/tmp
  - --secure-port=443
  - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
  - --kubelet-use-node-status-port
  - --metric-resolution=15s
  - --kubelet-insecure-tls # 加上该启动参数
  image: k8s.gcr.io/metrics-server/metrics-server:v0.6.1

2.3 部署 metrics-server

修改 components.yaml 之后,执行以下命令,通过 kubectl 一键部署到集群:1.

# kubectl apply -f components.yaml
serviceaccount/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
service/metrics-server created
deployment.apps/metrics-server created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created

2.4 检查运行状态

 1. 执行以下命令,检查 metrics-server 是否正常启动。示例如下:

#kubectl get pod -n kube-system |grep metrics-server
metrics-server-f79cf56fc-tjxp4       1/1     Running   0              18m

 2. 执行以下命令,检查配置文件。示例如下:

#kubectl get --raw /apis/metrics.k8s.io/v1beta1  | jq
{
  "kind": "APIResourceList",
  "apiVersion": "v1",
  "groupVersion": "metrics.k8s.io/v1beta1",
  "resources": [
    {
      "name": "nodes",
      "singularName": "",
      "namespaced": false,
      "kind": "NodeMetrics",
      "verbs": [
        "get",
        "list"
      ]
    },
    {
      "name": "pods",
      "singularName": "",
      "namespaced": true,
      "kind": "PodMetrics",
      "verbs": [
        "get",
        "list"
      ]
    }
  ]
}

 3. 执行以下命令,检查节点占用性能情况。示例如下:

[root@k8s-master][17:04:49][OK] ~/metric-server 
#kubectl get node
NAME         STATUS   ROLES           AGE   VERSION
k8s-master   Ready    control-plane   35d   v1.24.0
k8s-node-1   Ready    <none>          35d   v1.24.0
k8s-node-2   Ready    <none>          35d   v1.24.0
[root@k8s-master][17:06:05][OK] ~/metric-server 
#kubectl top node
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master   188m         9%     1947Mi          68%       
k8s-node-1   114m         5%     1254Mi          66%       
k8s-node-2   138m         6%     1277Mi          67%       
[root@k8s-master][17:06:08][OK] ~/metric-server 
#kubectl top pod -n monitoring 
NAME                                                        CPU(cores)   MEMORY(bytes)   
alertmanager-kube-prometheus-stack-alertmanager-0           2m           31Mi            
kube-prometheus-stack-grafana-595f8cff67-sncxs              1m           184Mi           
kube-prometheus-stack-kube-state-metrics-5b9c9559fb-8fddz   2m           23Mi            
kube-prometheus-stack-operator-79b6c68df8-fd78d             1m           34Mi            
kube-prometheus-stack-prometheus-node-exporter-clv5k        1m           16Mi            
kube-prometheus-stack-prometheus-node-exporter-ljl5d        2m           19Mi            
kube-prometheus-stack-prometheus-node-exporter-nvsk5        1m           17Mi            
prometheus-kube-prometheus-stack-prometheus-0               58m          353Mi          
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CN-FuWei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值