我正在使用k8s HPA-水平吊舱自动缩放器。事情按预期进行(如此处解释-https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/)
如果我删除部署kubectl delete deploy php-apache
,则删除部署,则将删除pod。但是HPA条目仍在进行部署。没有部署对象时,此条目的意义是什么?
答案 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可以保留,等待新的部署取代原来的位置,可以重新配置,也可以删除。