K8S-不带部署对象的HPA

时间:2019-03-10 16:28:23

标签: kubernetes

我正在使用k8s HPA-水平吊舱自动缩放器。事情按预期进行(如此处解释-https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/

如果我删除部署kubectl delete deploy php-apache,则删除部署,则将删除pod。但是HPA条目仍在进行部署。没有部署对象时,此条目的意义是什么?

1 个答案:

答案 0 :(得分:0)

从逻辑上讲,水平吊舱自动缩放器是一个控制循环,它检查其指定的目标(例如Deployment),以查看是否已满足度量标准阈值。 (这实际上是通过控制器管理器和指标API发生的)。 HPA是其自己的独立资源,它通过称为Scale subresource的方式与部署交互。这是一种抽象,可以用作Kubernetes可能希望自动扩展的任何将来资源的接口(不仅仅是部署)。

水平Pod自动缩放器的规格(摘自k8s设计文档):

type HorizontalPodAutoscalerSpec struct {
    // reference to Scale subresource; horizontal pod autoscaler will learn the current resource
    // consumption from its status,and will set the desired number of pods by modifying its spec.
    ScaleRef SubresourceReference
    // lower limit for the number of pods that can be set by the autoscaler, default 1.
    MinReplicas *int
    // upper limit for the number of pods that can be set by the autoscaler.
    // It cannot be smaller than MinReplicas.
    MaxReplicas int
    // target average CPU utilization (represented as a percentage of requested CPU) over all the pods;
    // if not specified it defaults to the target CPU utilization at 80% of the requested resources.
    CPUUtilization *CPUTargetUtilization
}

请注意,HPA使用scale ref定位所需资源,而Deployment则通过其选择器包含多个资源。出于灵活性原因,将HPA与特定的部署分离。这意味着,当您删除部署时,k8s可以删除通过其选择器管理的所有内容。 HPA不受部署管理,而仅通过自己的规范与其连接。 HPA可以保留,等待新的部署取代原来的位置,可以重新配置,也可以删除。