Kubernetes HPA在缩小范围时杀死随机吊舱|无论如何,为了避免杀死随机吊舱,还是选择低利用率的吊舱

Kubernetes HPA在缩小范围时杀死随机吊舱|无论如何,为了避免杀死随机吊舱,还是选择低利用率的吊舱,kubernetes,google-kubernetes-engine,devops,autoscaling,Kubernetes,Google Kubernetes Engine,Devops,Autoscaling,我已经部署了HPA来监控内存和CPU,我们的应用程序不够健壮,无法处理当pod在scaledown期间崩溃或死亡时终止任务的故障,需要手动干预以丢失数据重新启动任务,需要付出大量的努力。我正在四处寻找是否有一种方法可以在触发杀戮信号之前发送和接收一个触发器命令。我看到了prestop hook,但不确定如何才能让它工作。在缩放过程中发送kill信号之前是否可能触发预停止挂钩,在pod中通过监视运行脚本,并在CPU或mem达到一定数量时将信号发送回kubernetes,然后kubernetes发送

我已经部署了HPA来监控内存和CPU,我们的应用程序不够健壮,无法处理当pod在scaledown期间崩溃或死亡时终止任务的故障,需要手动干预以丢失数据重新启动任务,需要付出大量的努力。我正在四处寻找是否有一种方法可以在触发杀戮信号之前发送和接收一个触发器命令。我看到了prestop hook,但不确定如何才能让它工作。在缩放过程中发送kill信号之前是否可能触发预停止挂钩,在pod中通过监视运行脚本,并在CPU或mem达到一定数量时将信号发送回kubernetes,然后kubernetes发送kill信号以启动关闭过程。有什么帮助/建议吗

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,因为它不受坚定的支持,我们被建议只使用带有Mem和CPU的HPA。

HPA不会杀死删除Pod,它会扩展部署,进而扩展底层复制集。因此,Pod删除是由RS比例变化引起的。这使得.process不知道缩放是否以任何方式与HPA相关。您应该以一种可以删除部署中任何Pod的方式编写应用程序,并使其能够优雅地处理正常关机。

谢谢,这回答了我的一个问题。我的应用程序在pod删除期间处理任务时不够健壮。还有其他建议吗。?我试图实现预停止挂钩,并从2/2容器内杀死吊舱。