使用 Minikube Metrics Server 实现集群监控
一、Metrics Server 概述
Metrics Server 是 Kubernetes 集群的核心组件,用于收集资源指标数据(如 CPU 和内存使用情况),这些数据被用于:
- Horizontal Pod Autoscaler (HPA) 自动扩缩容
- kubectl top 命令
- Kubernetes Dashboard 资源展示
二、在 Minikube 中启用 Metrics Server
2.1 启用 Metrics Server 插件
# 启用 metrics-server 插件(Minikube 内置)
minikube addons enable metrics-server
2.2 验证安装
# 检查 metrics-server pod 状态
kubectl get pods -n kube-system | grep metrics-server
# 预期输出类似:
# metrics-server-5f4f6d5b5d-2w8xk 1/1 Running 0 2m
三、验证 Metrics Server 功能
3.1 查看节点指标
kubectl top nodes
# 预期输出:
# NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
# minikube 150m 7% 1200Mi 31%
3.2 查看 Pod 指标
kubectl top pods -A
# 预期输出类似:
# NAMESPACE NAME CPU(cores) MEMORY(bytes)
# kube-system coredns-6d4b75cb6d-zw7bv 3m 12Mi
# kube-system etcd-minikube 25m 42Mi
四、常见问题排查
4.1 Metrics Server 未正常运行
# 查看日志
kubectl logs -n kube-system deployment/metrics-server
# 检查 API 可用性
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes" | jq .
4.2 证书问题修复
如果出现证书错误,可以修改 Metrics Server 配置:
kubectl edit deployment -n kube-system metrics-server
添加以下参数:
spec:
template:
spec:
containers:
- args:
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP
五、结合 HPA 使用
5.1 创建 HPA 示例
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: php-backend-hpa
namespace: php-vue-prod
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-backend
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 70
5.2 查看 HPA 状态
kubectl get hpa -n php-vue-prod
# 预期输出:
# NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
# php-backend-hpa Deployment/php-backend 50%/50%, 60%/70% 2 10 3 5m
六、高级配置
6.1 自定义 Metrics Server 配置
# 获取当前配置
kubectl get configmap -n kube-system metrics-server-config -o yaml
# 自定义配置示例
apiVersion: v1
kind: ConfigMap
metadata:
name: metrics-server-config
namespace: kube-system
data:
NODE_RESOLUTION_TIMEOUT: "30s"
KUBELET_PREFERRED_ADDRESS_TYPES: "InternalIP,ExternalIP,Hostname"
6.2 资源限制设置
kubectl edit deployment -n kube-system metrics-server
添加资源限制:
resources:
requests:
cpu: 100m
memory: 200Mi
limits:
cpu: 200m
memory: 400Mi
七、与 Kubernetes Dashboard 集成
7.1 启用 Dashboard
minikube addons enable dashboard
minikube dashboard
7.2 查看资源指标
在 Dashboard 中:
- 导航到 "集群" → "节点"
- 可以看到 CPU/内存使用率图表
- 在 Pod 详情页查看单个 Pod 的资源使用情况
八、性能优化建议
-
调整指标采集间隔(默认60秒):
# 在 metrics-server 部署中添加 - --metric-resolution=30s
-
限制采集的指标数量:
- --requestheader-allowed-names="aggregator" - --requestheader-extra-headers-prefix="X-Remote-Extra-"
-
使用节点选择器(在大集群中):
nodeSelector: kubernetes.io/os: linux
九、清理资源
# 禁用 metrics-server
minikube addons disable metrics-server
# 完全删除
kubectl delete -n kube-system deployment metrics-server
通过以上配置,您可以在 Minikube 中充分利用 Metrics Server 监控集群资源使用情况,为自动扩缩容和性能优化提供数据支持。
No Comments