Kubernetes Skills技能使用说明
2026-04-01
新闻来源:网淘吧
围观:24
电脑广告
手机广告
Kubernetes自动扩缩容
使用HPA、VPA和KEDA配合kubectl-mcp-server工具实现全面自动扩缩容。
快速参考
HPA(水平Pod自动扩缩容器)
基于CPU的基础扩缩容:

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
应用与验证:
apply_manifest(hpa_yaml, namespace)
get_hpa(namespace)
VPA(垂直Pod自动扩缩容器)
优化资源请求规格:
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: my-app-vpa
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
updatePolicy:
updateMode: "Auto"
KEDA(事件驱动自动扩缩容)
检测KEDA安装
keda_detect_tool()
列出ScaledObjects
keda_scaledobjects_list_tool(namespace)
keda_scaledobject_get_tool(name, namespace)
列出ScaledJobs
keda_scaledjobs_list_tool(namespace)
触发器身份验证
keda_triggerauths_list_tool(namespace)
keda_triggerauth_get_tool(name, namespace)
KEDA管理的HPAs
keda_hpa_list_tool(namespace)
参见KEDA-TRIGGERS.md获取触发器配置。
常见KEDA触发器
基于队列的扩缩容(AWS SQS)
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: sqs-scaler
spec:
scaleTargetRef:
name: queue-processor
minReplicaCount: 0 # Scale to zero!
maxReplicaCount: 100
triggers:
- type: aws-sqs-queue
metadata:
queueURL: https://sqs.region.amazonaws.com/...
queueLength: "5"
基于Cron的扩缩容
triggers:
- type: cron
metadata:
timezone: America/New_York
start: 0 8 * * 1-5 # 8 AM weekdays
end: 0 18 * * 1-5 # 6 PM weekdays
desiredReplicas: "10"
Prometheus指标
triggers:
- type: prometheus
metadata:
serverAddress: http://prometheus:9090
metricName: http_requests_total
query: sum(rate(http_requests_total{app="myapp"}[2m]))
threshold: "100"
扩缩容策略
| 策略 | 工具 | 使用场景 |
|---|---|---|
| CPU/内存 | 水平Pod自动扩缩容 | 稳定流量模式 |
| 自定义指标 | 水平Pod自动扩缩容 v2 | 业务指标 |
| 事件驱动 | Kubernetes 事件驱动自动扩缩容 | 队列处理、定时任务 |
| 垂直 | 垂直Pod自动扩缩容 | 合理调整资源请求 |
| 缩容至零 | Kubernetes 事件驱动自动扩缩容 | 成本节约、空闲工作负载 |
成本优化的自动扩缩容
使用KEDA缩容至零
降低空闲工作负载的成本:
keda_scaledobjects_list_tool(namespace)
# ScaledObjects with minReplicaCount: 0 can scale to zero
使用VPA合理调整资源
获取建议并应用:
get_resource_recommendations(namespace)
# Apply VPA recommendations
预测性扩缩容
针对已知模式使用定时触发器:
# Scale up before traffic spike
triggers:
- type: cron
metadata:
start: 0 7 * * * # 7 AM
end: 0 9 * * * # 9 AM
desiredReplicas: "20"
多集群自动扩缩容
跨集群配置KEDA:
keda_scaledobjects_list_tool(namespace, context="production")
keda_scaledobjects_list_tool(namespace, context="staging")
故障排除
HPA未扩缩容
get_hpa(namespace)
get_pod_metrics(name, namespace) # Metrics available?
describe_pod(name, namespace) # Resource requests set?
KEDA未触发
keda_scaledobject_get_tool(name, namespace) # Check status
get_events(namespace) # Check events
常见问题
| 症状 | 检查项 | 解决方案 |
|---|---|---|
| HPA状态未知 | 指标服务器 | 安装metrics-server |
| KEDA未扩缩容 | 触发器认证 | 检查TriggerAuthentication |
| VPA未更新 | 更新模式 | 设置updateMode为Auto |
| 缩容缓慢 | 稳定化窗口 | 调整stabilizationWindowSeconds参数 |
最佳实践
-
始终设置资源请求
- HPA需要资源请求来计算利用率
-
使用多指标
- 结合CPU与自定义指标以提高准确性
-
稳定窗口
- 通过缩容稳定机制防止波动
-
谨慎实施缩容至零
- 考虑冷启动时间
- 使用激活阈值
相关技能
文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~