Kubernetes Pod Horizontal Autoscaler pod 和对象选择器字段是字符串吗?
Posted
技术标签:
【中文标题】Kubernetes Pod Horizontal Autoscaler pod 和对象选择器字段是字符串吗?【英文标题】:Kubernetes Pod Horizontal Autoscaler pod and object selector field is a string? 【发布时间】:2020-10-29 13:37:04 【问题描述】:https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/ 的 HPA 文档提供了 selector
属性的两个示例,一个用于 pod,另一个用于对象度量类型。这些示例之一是嵌套对象,另一个是字符串。例如:
- type: External
external:
metric:
name: queue_messages_ready
selector: "queue=worker_tasks"
target:
type: AverageValue
averageValue: 30
和
type: Object
object:
metric:
name: http_requests
selector: matchLabels: verb: GET
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#metricidentifier-v2beta2-autoscaling 的 API 文档为 selector
字段提供此描述:
选择器是给定指标的标准 kubernetes 标签选择器的字符串编码形式
这是否意味着您可以将selector
属性定义为字符串(例如selector: "matchLabels: verb: GET"
)以及嵌套对象?
【问题讨论】:
【参考方案1】:原来选择器必须是地图,否则会出现以下错误:
error: error validating "customresource.yml": error validating data: ValidationError(HorizontalPodAutoscaler.spec.metrics[0].object.metric.selector): invalid type for io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector: got "string", expected "map"; if you choose to ignore these errors, turn validation off with --validate=false
这也适用于外部指标类型,因此 K8s 文档在提供传递字符串的示例时似乎不正确。
【讨论】:
以上是关于Kubernetes Pod Horizontal Autoscaler pod 和对象选择器字段是字符串吗?的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes Horizontal Pod Autoscaler 如何计算多容器 Pod 的 CPU 利用率?
如何在 Kubernetes Horizontal Pod Autoscaling 中排除一些容器的指标
难以使用外部指标配置 Horizontal Pod Autoscaler
Kubernetes pod cpu 使用率计算方法 HPA