gpt4 book ai didi

google-compute-engine - 在 Kubernetes 代码中访问 heapster 指标

转载 作者:行者123 更新时间:2023-12-02 12:09:12 26 4
gpt4 key购买 nike

我想根据资源使用情况扩大/缩小 kubernetes 集群使用的 kubelet 数量。我一直在查看代码,并对如何在高层次上实现它有一些想法。

我被困在两件事上:

  • 什么是访问集群指标的好方法(通过 Heapster)?我应该尝试使用 kubedns 来查找 heapster 端点并直接查询 API 还是有其他可能的方式?另外,我不确定如何使用 kubedns 来获取前者的 heapster URL。
  • 扩展/收缩节点数量的重新调度程序需要每 30 分钟启动一次。什么是最好的方法。代码中是否有一些接口(interface)或某些东西可以用于它,或者我应该编写一个每 30 分钟调用一次的代码段并将其放入主循环中?

  • 任何帮助将不胜感激 :)

    最佳答案

    第1部分:

    您所说的关于使用 kubedns 查找 heapster 并查询 REST API 很好。

    您还可以编写一个将接口(interface)抽象为 heapster 的客户端接口(interface)——这将有助于单元测试。

    看看这个指标客户端:
    https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/podautoscaler/metrics/metrics_client.go
    它并不完全符合您的要求:它获取每个 Pod 的统计信息,而不是每个集群或每个节点的统计信息。但是你可以修改它。

    在功能 getForPods ,您可以在此处看到解析 heapster 服务并连接到它的代码:

            resultRaw, err := h.client.Services(h.heapsterNamespace).
    ProxyGet(h.heapsterService, metricPath, map[string]string{"start": startTime.Format(time.RFC3339)}).
    DoRaw()

    其中 heapsterNamespace 是“kube-system”,heapsterService 是“heapster”。

    该指标客户端是“水平 pod 自动缩放器”实现的一部分。它正在解决一个稍微不同的问题,但如果你还没有的话,你应该看看它。如果在这里描述: https://github.com/kubernetes/kubernetes/blob/master/docs/design/horizontal-pod-autoscaler.md

    仅供引用:Heapster REST API 在这里定义:
    https://github.com/kubernetes/heapster/blob/master/docs/model.md
    您应该四处寻找,看看是否有适合您的节点级或集群级 CPU 指标。

    第2部分:

    没有用于缩小节点的标准接口(interface)。每个云提供商都不同。如果您在本地,则无法缩小节点。

    相关讨论:
    https://github.com/kubernetes/kubernetes/issues/11935

    旁注:在 kubernetes 开发人员中,我们通常使用术语“重新调度程序”来谈论跨机器重新平衡 pod 的东西,即通过从一台机器上删除一个 pod 并在另一台机器上创建相同类型的 pod。这与您所说的建筑不同。我们还没有构建一个重新调度器,但是这里有一个关于如何构建一个的大纲:
    https://github.com/kubernetes/kubernetes/blob/master/docs/proposals/rescheduler.md

    关于google-compute-engine - 在 Kubernetes 代码中访问 heapster 指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33517756/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com