92·监控与运维进阶

Metrics Server

kubernetesmetrics-serverhpa

Metrics Server

学习目标

  1. 理解 Metrics Server 的作用和原理
  2. 掌握安装和配置 Metrics Server
  3. 学会使用 kubectl top 查看资源使用

核心概念

什么是 Metrics Server

Metrics Server 是 Kubernetes 内置的轻量级指标收集器

┌─────────────────────────────────────────┐
│              Kubernetes 集群            │
│  ┌─────────────────────────────────┐   │
│  │         Metrics Server          │   │
│  │    收集 Node 和 Pod 的 CPU/内存  │   │
│  └───────────────┬─────────────────┘   │
│                  │                      │
│  ┌───────────────┼─────────────────┐   │
│  │               ▼                 │   │
│  │    kubelet (cAdvisor)           │   │
│  │    每 15 秒采集一次             │   │
│  └─────────────────────────────────┘   │
│                  │                      │
│  ┌───────────────┼─────────────────┐   │
│  │               ▼                 │   │
│  │    kubectl top / HPA            │   │
│  └─────────────────────────────────┘   │
└─────────────────────────────────────────┘

Metrics Server vs Prometheus

特性Metrics ServerPrometheus
用途资源监控、HPA全面监控、告警
数据保留内存中,不持久化持久化存储
指标类型CPU、内存任意指标
安装通常已内置需要额外安装

核心功能

1. 资源使用查看
   kubectl top nodes    → Node CPU/内存使用
   kubectl top pods     → Pod CPU/内存使用

2. HPA 数据源
   HPA 根据 CPU/内存使用率自动扩缩容

3. 调度参考
   调度器根据资源使用情况做出调度决策

实践练习

练习 1:安装 Metrics Server

# 方式 1:使用官方 YAML
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

# 方式 2:使用 Helm
helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
helm upgrade --install metrics-server metrics-server/metrics-server

# 方式 3:minikube
minikube addons enable metrics-server

练习 2:验证安装

# 检查 Pod 状态
kubectl get pods -n kube-system | grep metrics-server

# 等待就绪
kubectl wait --for=condition=ready pod -l k8s-app=metrics-server -n kube-system --timeout=60s

# 查看资源使用
kubectl top nodes
kubectl top pods -A

练习 3:使用 Metrics API

# 直接调用 Metrics API
kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes
kubectl get --raw /apis/metrics.k8s.io/v1beta1/pods

# 查看特定 Node 的指标
kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes/<node-name>

练习 4:配置 HPA

# hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70

常见问题

1. Metrics Server 无法获取数据

# 检查 Pod 日志
kubectl logs -n kube-system -l k8s-app=metrics-server

# 常见原因:
# - 证书问题:添加 --kubelet-insecure-tls
# - 网络问题:检查 Pod 网络
# - kubelet 未运行:检查 Node 状态

2. kubectl top 显示 metrics not available

# 等待几分钟让 Metrics Server 收集数据
# 或检查 Metrics Server 是否正常运行
kubectl get apiservice v1beta1.metrics.k8s.io

小结

要点说明
Metrics Server轻量级指标收集器
核心功能资源监控、HPA 数据源
数据类型CPU、内存
数据保留内存中,不持久化
常用命令kubectl top nodes/pods

练习编辑器

bash
Loading...

继续学习

完成本课后,建议继续学习下一课「Prometheus 配置」 以巩固所学知识。