
1) 【一句话结论】:利用Kubernetes的Horizontal Pod Autoscaler(HPA)结合云平台弹性资源池,根据CPU等指标自动调整Pod副本数,实现系统在交易日高峰期的弹性伸缩,确保高可用与资源效率。
2) 【原理/概念讲解】:老师解释,Kubernetes的HPA是自动扩容核心工具。它通过持续监控Pod的指标(如CPU使用率、自定义业务指标),动态调整Deployment/StatefulSet的副本数。类比:像空调根据室温自动调节风量,系统根据负载自动增减实例。具体机制是,HPA会收集Pod的CPU使用率(或自定义指标),与预设阈值比较——当负载超过阈值时,自动增加Pod副本数;反之则减少。云平台(如阿里云ECS集群)作为K8s节点池,提供弹性资源,支持自动扩容节点,进一步保障资源供应。
3) 【对比与适用场景】:
| 对比维度 | 传统手动扩容 | Kubernetes HPA自动扩容 |
|---|---|---|
| 定义 | 人工监控负载,手动调整服务器数量或应用实例 | 自动根据指标(如CPU)调整Pod副本数 |
| 特性 | 人工干预,响应慢,易遗漏 | 自动化,实时响应,资源利用率高 |
| 使用场景 | 负载波动小,资源固定 | 负载波动大(如交易高峰),需快速响应 |
| 注意点 | 需运维人员实时监控,成本高 | 需配置指标阈值,可能存在扩容延迟 |
4) 【示例】:假设系统Web服务Deployment配置HPA根据CPU使用率自动调整副本数。
# Deployment配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: trading-web
spec:
replicas: 3 # 初始副本数
selector:
matchLabels:
app: trading-web
template:
metadata:
labels:
app: trading-web
spec:
containers:
- name: web-container
image: zhongzheng/trading-web:latest
resources:
requests:
cpu: "100m"
limits:
cpu: "500m"
ports:
- containerPort: 8080
# HPA配置
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: trading-web-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: trading-web
minReplicas: 3 # 最小副本数
maxReplicas: 20 # 最大副本数
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70 # CPU >70%时扩容
解释:高峰期CPU使用率超70%,HPA自动增加副本数(最多20个),提升处理能力;非高峰期缩减副本数,节省资源。
5) 【面试口播版答案】:(约80秒)
“面试官您好,针对交易日9:30-15:00的高峰流量,我们可以通过Kubernetes的Horizontal Pod Autoscaler(HPA)实现弹性伸缩。具体来说,HPA会根据Pod的CPU使用率等指标,自动调整Deployment的副本数。比如,我们设置当CPU使用率超过70%时,自动增加Pod副本数,最多扩容到20个实例。同时,结合阿里云的弹性节点池,当Pod数量增加时,云平台会自动分配更多ECS实例,确保资源充足。这样,高峰期系统能快速扩容应对流量冲击,非高峰期则缩减实例降低成本,既保证高可用又优化资源利用率。”
6) 【追问清单】:
7) 【常见坑/雷区】: