Metrics Server
学习目标
- 理解 Metrics Server 的作用和原理
- 掌握安装和配置 Metrics Server
- 学会使用 kubectl top 查看资源使用
核心概念
什么是 Metrics Server
Metrics Server 是 Kubernetes 内置的轻量级指标收集器
┌─────────────────────────────────────────┐
│ Kubernetes 集群 │
│ ┌─────────────────────────────────┐ │
│ │ Metrics Server │ │
│ │ 收集 Node 和 Pod 的 CPU/内存 │ │
│ └───────────────┬─────────────────┘ │
│ │ │
│ ┌───────────────┼─────────────────┐ │
│ │ ▼ │ │
│ │ kubelet (cAdvisor) │ │
│ │ 每 15 秒采集一次 │ │
│ └─────────────────────────────────┘ │
│ │ │
│ ┌───────────────┼─────────────────┐ │
│ │ ▼ │ │
│ │ kubectl top / HPA │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
Metrics Server vs Prometheus
| 特性 | Metrics Server | Prometheus |
|---|---|---|
| 用途 | 资源监控、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...