0. 写在前面:为什么你需要“神器”而非“常用命令
大家好,老杨是老杨,干货满满的老杨 欢迎点击原文链接或直接访问vps.top365app.com,来看老杨的全球vps信息还有各种咱们用得着的信息实时收集分析项目.
帮老杨点赞、转发、在看以及打开小星标哦
攒今世之功德,修来世之福报
老杨看过不少报告,发现Kubernetes集群资源用得少是个常见问题。Cast AI的2025报告说,平均CPU利用率只有10%,内存23%。 这比理想的60%-80%低多了。他们的数据来自数千个集群。Fairwinds的2024基准报告也指出,37%组织有一半以上工作负载需要调整资源大小来省钱。 这些事实说明,大多数集群确实没跑满。为什么?下面我一步步说。
集群没跑满意思是资源闲着。CPU用率低到10%,内存23%。 比如一家电商公司,双11时流量大,平时集群就空转。报告说这是因为过度预留资源和碎片化。碎片化就像停车场,车位小块空着但停不进大车。
而且,你可以自己查。装Prometheus和Grafana看利用率。
先在master节点输入:
$ kubectl apply -f https://github.com/prometheus-operator/prometheus-operator/raw/main/bundle.yaml
系统显示:
customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com created
... (更多资源创建信息)
然后装Grafana Dashboard(ID: 6417):
$ helm repo add grafana https://grafana.github.io/helm-charts
$ helm install grafana grafana/grafana
输出:
NAME: grafana
LAST DEPLOYED: Thu Aug 28 10:00:00 2025
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
进Grafana看图,CPU曲线低,闲置70%。这样你看到自家数据。
请求是Pod最小需求,限制是上限。调不对就浪费。Cast AI说这是因为公司初期优化不够,复杂管理导致。
比如一个Spring Boot的订单服务,请求设0.5 CPU,但JVM内存涨。用Vertical Pod Autoscaler (VPA)自动调。
YAML例子:
apiVersion: v1
kind: Pod
metadata:
name: order-service
spec:
containers:
- name: app
image: registry.cn-hangzhou.aliyuncs.com/myrepo/order-app:latest
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "1Gi"
cpu: "1"
输入:
$ kubectl apply -f order-pod.yaml
输出:
pod/order-service created
如果低,装VPA:
$ kubectl apply -f https://github.com/kubernetes/autoscaler/raw/master/vertical-pod-autoscaler/deploy/vpa-deployment.yaml
输出:
deployment.apps/vpa-admission-controller created
deployment.apps/vpa-recommender created
deployment.apps/vpa-updater created
VPA建议调到300m CPU。利用率升20%。像字节跳动那样用,省资源。
调度器没用好,Pod挤少数节点。Dynatrace报告说,云集群节点小,需平衡。 比如阿里云主,腾讯云备,高负载只在一边。
用节点亲和性。标签“zone: east”。
YAML:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 3
template:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: zone
operator: In
values:
- east
输入:
$ kubectl apply -f web-deployment.yaml
输出:
deployment.apps/web-app created
查:
$ kubectl get pods -o wide
输出:
NAME READY STATUS RESTARTS AGE IP NODE
web-app-5d7b9c9b4-2q3w4 1/1 Running 0 1m 10.244.1.2 node-east-1
web-app-5d7b9c9b4-7p8k9 1/1 Running 0 1m 10.244.1.3 node-east-2
... (均匀分布)
利用率从25%到65%。像开车,分流避免堵。
应用没水平扩展,资源白耗。Fairwinds说65%组织缺探针,影响可靠性。 比如金融MySQL连接多,闲时占内存。
用Horizontal Pod Autoscaler (HPA)。Nginx例子:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: nginx-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
输入:
$ kubectl apply -f nginx-hpa.yaml
输出:
horizontalpodautoscaler.autoscaling/nginx-hpa created
模拟负载用ab:
$ ab -n 10000 -c 100 http://your-service/
Pod从2到5,利用率稳50%。这样帮你应对流量峰。
没监控就不知问题。Cast AI说缺DevOps工程师导致效率降。 用ELK或阿里云SLS。
装EFK:
$ helm repo add fluent https://fluent.github.io/helm-charts
$ helm install fluent-bit fluent/fluent-bit
输出:
NAME: fluent-bit
LAST DEPLOYED: Thu Aug 28 11:00:00 2025
...
日志显示夜间任务浪费,优化省30%。像查账,找出漏钱处。
这里老杨先声明一下,日常生活中大家都叫老杨波哥,跟辈分没关系,主要是岁数大了.就一个代称而已. 老杨的00后小同事老杨喊都是带哥的.张哥,李哥的. 但是这个称呼呀,在线下参加一些活动时.金主爸爸也这么叫就显的不太合适. 比如上次某集团策划总监,公司开大会来一句:“今个咱高兴!有请IT运维技术圈的波哥讲两句“ 这个氛围配这个称呼在互联网这行来讲就有点对不齐! 每次遇到这个情况老杨就想这么接话: “遇到各位是缘分,承蒙厚爱,啥也别说了,都在酒里了.老杨干了,你们随意!” 所以以后咱们改叫老杨,即市井又低调.还挺亲切,老杨觉得挺好.
运维X档案系列文章:
企业级 Kubernetes 集群安全加固全攻略( 附带一键检查脚本)
看完别走.修行在于点赞、转发、在看.攒今世之功德,修来世之福报
点击阅读原文或打开地址实时收集分析全球vps的项目 vps.top365app.com
老杨AI的号: 98dev