暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kubernetes监控神器:Metrics Server全解析

Linux运维智行录 2024-10-07
44

在当今快速发展的云原生环境中,Kubernetes已成为容器编排的事实标准。随着越来越多的应用被迁移到Kubernetes平台上,有效地管理和优化这些应用的性能变得至关重要。而在这个过程中,有一个不可或缺的工具——Metrics Server,它扮演着至关重要的角色。

生产环境稳定,是业务成功和用户信任的基石


01
什么是metrics server?

Metrics Server 是 Kubernetes 内置自动扩展管道的可扩展、高效的容器资源指标来源。

Metrics Server 从 Kubelet 收集资源指标,并通过Metrics API在 Kubernetes apiserver 中公开它们,以供Horizontal Pod Autoscaler和Vertical Pod Autoscaler 使用。Metrics API 也可以通过 访问kubectl top,从而更轻松地调试自动缩放管道。

Tip:Metrics Server 仅用于自动扩展目的。例如,请勿将其用于将指标转发到监控解决方案,或将其作为监控解决方案指标的来源。在这种情况下,请/metrics/resource直接从 Kubelet 端点收集指标。


metrics-server设计图


02
使用场景
  • 自动伸缩:结合Horizontal Pod Autoscaler (HPA)使用时,可以根据实时负载动态调整副本数量。

  • 健康检查:定期检查关键服务的资源消耗是否正常,帮助识别潜在问题。

  • 成本优化:分析长期运行的工作负载,找出可以减少资源请求的地方以节省成本。

03
部署metrics-server

1、添加helm仓库

$ helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
"metrics-server" has been added to your repositories


2、下载并推送到harbor

$ helm pull metrics-server/metrics-server --version 3.12.1

$ helm push metrics-server-3.12.1.tgz oci://core.jiaxzeng.com/plugins
Pushed: core.jiaxzeng.com/plugins/metrics-server:3.12.1
Digest: sha256:1d3328b3dc37ad8540bf67b6c92cbaa8c80eed3cafdb88e1fe7c4f5a1df334fe


3、拉取chart包

$ sudo helm pull oci://core.jiaxzeng.com/plugins/metrics-server --version 3.12.1 --untar --untardir /etc/kubernetes/addons/
Pulled: core.jiaxzeng.com/plugins/metrics-server:3.12.1
Digest: sha256:1d3328b3dc37ad8540bf67b6c92cbaa8c80eed3cafdb88e1fe7c4f5a1df334fe


4、创建metrics-server配置文件

$ cat <<'EOF' | sudo tee /etc/kubernetes/addons/metrics-server-value.yaml > /dev/null 
image:
  repository: core.jiaxzeng.com/library/metrics-server

args:
  - --kubelet-insecure-tls
EOF


5、安装metrics-server

$ helm -n kube-system install metrics-server -f /etc/kubernetes/addons/metrics-server-value.yaml /etc/kubernetes/addons/metrics-server
NAME: metrics-server
LAST DEPLOYED: Mon Oct  7 19:42:10 2024
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
***********************************************************************
* Metrics Server                                                      *
***********************************************************************
  Chart version: 3.12.1
  App version:   0.7.1
  Image tag:     core.jiaxzeng.com/library/metrics-server:v0.7.1
***********************************************************************


6、验证服务

$ kubectl get pod -n kube-system -l app.kubernetes.io/name=metrics-server
NAME                              READY   STATUS    RESTARTS   AGE
metrics-server-5ff887f769-xc9q5   1/1     Running   0          2m12s

$ kubectl top nodes
NAME           CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master01   294m         14%    1935Mi          50%       
k8s-master02   401m         20%    1788Mi          46%       
k8s-master03   302m         15%    1730Mi          45%       
k8s-node01     323m         4%     3730Mi          23%       
k8s-node02     537m         6%     2516Mi          15%       
k8s-node03     507m         6%     4846Mi          30%       
k8s-node04     286m         3%     1594Mi          10% 
    

04
参考文档
  • https://kubernetes.io/docs/tasks/debug/debug-cluster/resource-metrics-pipeline/#metrics-server

  • https://github.com/kubernetes-sigs/metrics-server


01
结语

通过本文的学习,相信你已经掌握了如何利用Metrics Server加强Kubernetes集群的监控能力。这不仅有助于提高系统的稳定性和响应速度,还能有效降低运维成本。希望各位读者能够将所学知识应用于实践当中,持续探索更多关于Kubernetes的最佳实践。记得订阅我们的公众号,不错过任何一篇精彩内容!


别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!

END

文章转载自Linux运维智行录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论