1

是否可以将 HPA 配置为与自定义指标服务器的不同 api-service 一起使用,而不是v1beta1.custom.metrics.k8s.io

就我而言,v1beta1.custom.metrics.k8s.io已经绑定到其他一些指标服务器,我不想碰它。

我想创建自己的指标服务器,将其绑定到我自己的 api-service 并在我的命名空间中将此 api-service 与 HPA 一起使用。

4

1 回答 1

0

您可以按照官方文档中的指南为节点中可用的任何自定义指标创建 HPA 。

为了让您可以使用 API,metrics-server 通过以下 API 公开指标:

  • /nodes- 所有节点指标;type []NodeMetrics
  • /nodes/{node}- 指定节点的指标;type NodeMetrics
  • /namespaces/{namespace}/pods- 命名空间内的所有 pod 指标,支持所有命名空间;type []PodMetrics
  • /namespaces/{namespace}/pods/{pod}- 指定 pod 的指标;type PodMetrics

列出可用 API 的完整命令如下所示:

kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1"

如果您在 GCP 或其他云上工作,请参阅在 GCP 中部署自定义指标的指南


更新

回复您的评论:

HPA 能够从以下位置读取指标:

  • metrics.k8s.io(资源指标)
  • custom.metrics.k8s.io(自定义指标)
  • external.metrics.k8s.io(外部指标)

Horizo​​ntalPodAutoscaler 的常见用途是将其配置为从聚合的 APImetrics.k8s.iocustom.metrics.k8s.ioexternal.metrics.k8s.io)中获取指标。API 通常由名为 Metrics Server的metrics.k8s.io插件提供,需要单独启动。有关资源指标的更多信息,请参阅Metrics Server

因此,您可以从中metrics.k8s.io获取集群可用的任何内容。或者您可以创建自己的 APIService:

apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  name: <name of the registration object>
spec:
  group: <API group name this extension apiserver hosts>
  version: <API version this extension apiserver hosts>
  groupPriorityMinimum: <priority this APIService for this group, see API documentation>
  versionPriority: <prioritizes ordering of this version within a group, see API documentation>
  service:
    namespace: <namespace of the extension apiserver service>
    name: <name of the extension apiserver service>
  caBundle: <pem encoded ca cert that signs the server cert used by the webhook>

请找到有关创建 APIService的完整指南。玩得开心 :)

于 2021-12-06T17:56:37.343 回答