在当今快速发展的云原生环境中,Kubernetes已成为容器编排的事实标准。随着越来越多的应用被迁移到Kubernetes平台上,有效地管理和优化这些应用的性能变得至关重要。而在这个过程中,有一个不可或缺的工具——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设计图
自动伸缩:结合Horizontal Pod Autoscaler (HPA)使用时,可以根据实时负载动态调整副本数量。
健康检查:定期检查关键服务的资源消耗是否正常,帮助识别潜在问题。
成本优化:分析长期运行的工作负载,找出可以减少资源请求的地方以节省成本。
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%
https://kubernetes.io/docs/tasks/debug/debug-cluster/resource-metrics-pipeline/#metrics-server
https://github.com/kubernetes-sigs/metrics-server
通过本文的学习,相信你已经掌握了如何利用Metrics Server加强Kubernetes集群的监控能力。这不仅有助于提高系统的稳定性和响应速度,还能有效降低运维成本。希望各位读者能够将所学知识应用于实践当中,持续探索更多关于Kubernetes的最佳实践。记得订阅我们的公众号,不错过任何一篇精彩内容!
别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!





