【发布时间】:2020-04-19 00:05:55
【问题描述】:
我已经部署了 HPA 来监控内存和 CPU,我们的应用程序不够健壮,无法处理在缩减期间 pod 崩溃或终止时它终止任务的故障,并且需要手动干预重新启动有数据丢失的任务并且需要大量努力。如果有办法在触发终止信号之前发送触发器命令发送和接收,我正在环顾四周。我看到了 prestop 钩子,但不确定我如何才能做到这一点。是否可以在缩减期间发送终止信号之前触发 prestop 钩子,其中通过监视在 pod 中运行脚本,并在 CPU 或 mem 达到一定数量时将信号发送回 kubernetes,然后 kubernetes 发送终止信号以启动关闭过程。有什么帮助/建议吗?
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
horizontalpodautoscaler.autoscaling/hpa Deployment/task-deployment1 545%/85%, 1%/75% 2 5 5 36h
以下是 hpa 清单文件
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: hpa
namespace: namespace-CapAm
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: task-deployment1
minReplicas: 2
maxReplicas: 5
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 75
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 85
我们将无法使用 promotheus,因为它不受严格支持,建议我们仅将 HPA 与 Mem 和 CPU 一起使用。
【问题讨论】:
标签: kubernetes google-kubernetes-engine devops autoscaling