【问题标题】:Kubernetes HPA kills random pod during scale down | anyway to avoid killing a random pod rather go for pod with low utilizationKubernetes HPA 在缩减期间杀死随机 pod |无论如何,为了避免杀死一个随机的 pod,而不是去使用低利用率的 pod
【发布时间】: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


    【解决方案1】:

    HPA 不会杀死(删除)Pod,它会扩展 Deployment,进而扩展底层 ReplicaSet。所以 Pod 删除是由 RS 规模变化触发的。这使得.process 不知道缩放是否以任何方式与 HPA 相关。您应该以可以删除部署中的任何 Pod 的方式编写您的应用程序,并使其正常处理正常关闭。

    【讨论】:

    • 谢谢,这回答了我的一个问题。我的应用程序在删除 pod 期间处理任务的能力并不强。还有其他建议吗?我正在尝试实现 prestop 钩子并从内部(2/2 容器)杀死 pod。
    猜你喜欢
    • 2021-02-18
    • 2018-03-04
    • 1970-01-01
    • 2020-04-16
    • 2017-09-10
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多