Metrics Server
Metrics Server(数据分析员)是 Kubernetes 集群服务层的一个重要组件,它负责收集节点和 Pod 的资源使用情况(CPU、内存等),并把这些数据提供给其他组件使用。
🧩 Metrics Server 的职责
- 资源数据收集
👉 从每个节点上的 Kubelet 获取资源使用情况。 - 数据聚合
👉 汇总整个集群的资源指标,形成统一的查询接口。 - 提供 API
👉 通过metrics.k8s.ioAPI,把数据提供给 Horizontal Pod Autoscaler、Dashboard 等组件使用。
📌 类比理解
- Metrics Server = 数据分析员
- 它每天收集工厂(节点)和工人(Pod)的工作情况(CPU、内存使用)。
- 把这些数据整理成报表,交给管理层(HPA、Dashboard)做决策。
- 它本身不做调度或管理,只是提供数据支持。
📝 使用场景
- 自动扩缩容:HPA 根据 Metrics Server 提供的 CPU/内存数据,决定是否增加或减少 Pod 副本。
- 监控与可视化:Dashboard 或 Prometheus 可以通过 Metrics Server 获取实时资源使用情况。
- 资源优化:帮助管理员了解集群负载,合理分配资源。
⚠️ 注意事项
- Metrics Server 不是监控系统,它只提供基础的资源数据。
- 如果需要更全面的监控(磁盘、网络、应用指标),需要使用 Prometheus/Grafana。
- 必须在集群中部署 Metrics Server,否则 HPA 无法工作。
💡 总结
- Metrics Server 是 Kubernetes 的 数据分析员。
- 它收集并汇总节点和 Pod 的资源使用情况。
- 为自动扩缩容和监控提供关键数据支持。
🧩 Horizontal Pod Autoscaler
Horizontal Pod Autoscaler(HPA,自动扩缩容经理)是 Kubernetes 中的一个控制器,它的作用是根据实时的资源使用情况(CPU、内存等)自动调整 Pod 副本数量,从而保证应用既能应对高峰流量,又不会浪费资源。
🧩 HPA 的职责
- 监控指标
👉 通过 Metrics Server 获取 Pod 的 CPU、内存等使用情况。 - 自动扩缩容
👉 当负载升高时,增加 Pod 副本;当负载降低时,减少 Pod 副本。 - 保持目标值
👉 用户可以设定目标,比如“平均 CPU 使用率保持在 50%”,HPA 会自动调整副本数来维持这个目标。
📌 类比理解
- HPA = 自动扩缩容经理
- 它每天查看工人(Pod)的工作负荷。
- 如果工人太忙(CPU 使用率过高),经理会再招一些工人来分担。
- 如果工人太闲(CPU 使用率过低),经理会让部分工人休息。
- 这样既保证生产效率,又避免浪费人力。
📝 示例配置
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
👉 这个 HPA 会保证 myapp 的平均 CPU 使用率保持在 50%,副本数在 2 到 10 之间自动调整。
⚠️ 注意事项
- 必须部署 Metrics Server,否则 HPA 无法获取指标。
- 只支持部分指标:默认支持 CPU、内存;如果需要自定义指标,需要结合 Prometheus Adapter。
- 适合无状态应用:有状态应用(如数据库)不适合用 HPA 扩缩容。
💡 总结
- HPA 是 Kubernetes 的 自动扩缩容经理。
- 它根据指标自动调整 Pod 副本数,保证应用既能应对负载,又不浪费资源。
- 与 Metrics Server 配合使用,是集群弹性伸缩的关键机制。
🧩 Vertical Pod Autoscaler
Vertical Pod Autoscaler(VPA,垂直扩缩容经理)是 Kubernetes 中的一个控制器,它的作用是根据 Pod 的实际资源使用情况,自动调整 Pod 的 CPU 和内存请求/限制,而不是像 HPA 那样调整副本数量。
🧩 VPA 的职责
- 监控资源使用
👉 持续观察 Pod 的 CPU、内存消耗情况。 - 推荐资源规格
👉 根据历史和当前数据,给出合适的资源请求值。 - 自动更新 Pod
👉 可以直接修改 Pod 的资源配置(需要重启 Pod),让它更符合实际负载。
📌 类比理解
- VPA = 垂直扩缩容经理
- 如果工人(Pod)太弱(CPU/内存不足),经理会给他更好的工具(增加资源)。
- 如果工人太强(资源过剩),经理会收回一些工具(减少资源),避免浪费。
- 它关注的是 单个工人的装备,而不是工人的数量。
📝 示例配置
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: myapp-vpa
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
updatePolicy:
updateMode: Auto
👉 这个 VPA 会自动调整 myapp Deployment 中 Pod 的 CPU/内存请求值。
⚠️ 注意事项
-
与 HPA 的区别:
- HPA 调整 副本数量。
- VPA 调整 单个 Pod 的资源规格。
-
重启机制:VPA 修改资源时通常需要重启 Pod。
-
适用场景:适合负载稳定但资源需求不确定的应用。
-
不建议与 HPA 同时使用:两者可能产生冲突(一个加副本,一个加资源)。
💡 总结
- VPA 是 Kubernetes 的 垂直扩缩容经理。
- 它根据资源使用情况自动调整 Pod 的 CPU/内存规格。
- 与 HPA 相辅相成:HPA 管数量,VPA 管规格。
🧩 Cluster Autoscaler
Cluster Autoscaler(集群扩缩容经理)是 Kubernetes 中负责在节点层面进行自动扩缩容的组件。它的作用是根据 Pod 的调度情况,自动增加或减少集群中的节点数量,保证 Pod 有足够的运行空间。
🧩 Cluster Autoscaler 的职责
- 自动扩容
👉 当有 Pod 因为资源不足而无法调度时,Cluster Autoscaler 会自动增加节点。 - 自动缩容
👉 当某些节点上的 Pod 可以迁移到其他节点时,Cluster Autoscaler 会自动删除空闲节点,节省成本。 - 与云平台交互
👉 在云环境中,它会调用云平台 API(AWS、GCP、Azure 等)来创建或删除虚拟机。
📌 类比理解
- Cluster Autoscaler = 集群扩缩容经理
- 如果工厂(集群)里的工人(Pod)太多,现有车间(节点)放不下,经理会再租新的车间。
- 如果某个车间空了,经理会把工人搬走,然后退租这个车间,避免浪费。
- 它关注的是 车间数量(节点),而不是工人数量或装备。
⚙️ 与其他 Autoscaler 的区别
| 组件 | 调整对象 | 类比角色 |
|---|---|---|
| Horizontal Pod Autoscaler | Pod 副本数量 | 招更多工人 |
| Vertical Pod Autoscaler | Pod 的资源规格 | 给工人更好工具 |
| Cluster Autoscaler | 节点数量 | 租更多车间 |
⚠️ 注意事项
- 需要与云平台或节点管理系统集成。
- 适合运行在 云环境,裸机环境通常不使用。
- 与 HPA/VPA 配合,可以实现从 Pod 到节点的全方位自动扩缩容。
💡 总结
- Cluster Autoscaler 是 Kubernetes 的 节点扩缩容经理。
- 它根据 Pod 的调度情况自动增加或减少节点。
- 与 HPA/VPA 结合,实现真正的弹性集群。
🧩 Dashboard
Kubernetes Dashboard 是一个 Web UI(图形化界面),它让你可以通过浏览器直观地管理和监控集群。 它相当于给 Kubernetes 提供了一块“控制面板”,让你不用只依赖命令行 kubectl。
🧩 Dashboard 的主要功能
- 集群概览
👉 显示节点、Pod、Service、Deployment 等资源的运行状态。 - 应用管理
👉 可以直接在界面上创建、更新、删除 Deployment、Service 等对象。 - 监控与日志
👉 查看 Pod 的 CPU、内存使用情况,以及容器日志。 - 故障排查
👉 通过界面快速定位异常 Pod 或失败的 Deployment。 - 安全与权限
👉 支持基于 RBAC 的访问控制,不同用户可以有不同的权限。
📌 类比理解
- Dashboard = 集群的驾驶舱
- 就像飞机驾驶舱一样,Dashboard 把所有关键指标和控制按钮集中在一个界面。
- 管理员可以通过它快速查看集群健康状况,并进行操作。
- 它让复杂的命令行操作变得更直观。
📝 部署示例
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
👉 部署完成后,可以通过 kubectl proxy 或配置 Ingress/Service 来访问 Dashboard。
⚠️ 注意事项
- 安全性:Dashboard 默认权限较高,必须结合 RBAC 和认证机制,否则存在安全风险。
- 生产环境建议:通常只在开发或测试环境使用,生产环境更推荐结合监控工具(如 Prometheus + Grafana)。
- 依赖 Metrics Server:部分功能(如资源使用情况)需要 Metrics Server 提供数据。
💡 总结
- Dashboard 是 Kubernetes 的 图形化驾驶舱。
- 它提供集群概览、应用管理、监控和日志查看功能。
- 在学习和测试阶段非常有用,但生产环境需谨慎使用。

浙公网安备 33010602011771号