使用 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 监控集群资源使用情况,为自动扩缩容和性能优化提供数据支持。