Google compute engine 在Kubernetes代码中访问heapster度量

Google compute engine 在Kubernetes代码中访问heapster度量,google-compute-engine,kubernetes,Google Compute Engine,Kubernetes,我想根据资源使用情况扩展/缩小kubernetes集群使用的kubelets的数量。我一直在研究代码,并对如何在高级别上实现它有了一些想法 我被两件事困住了: (通过Heapster)访问集群指标的好方法是什么?我应该尝试使用kubedns查找heapster端点并直接查询API,还是有其他可能的方法?此外,我不知道如何使用kubedns在前者中获取heapster URL 扩展/收缩节点数的重新调度程序需要每30分钟启动一次。最好的办法是什么。代码中是否有一些接口或东西我可以使用,或者我应该编

我想根据资源使用情况扩展/缩小kubernetes集群使用的kubelets的数量。我一直在研究代码,并对如何在高级别上实现它有了一些想法

我被两件事困住了:

  • (通过Heapster)访问集群指标的好方法是什么?我应该尝试使用kubedns查找heapster端点并直接查询API,还是有其他可能的方法?此外,我不知道如何使用kubedns在前者中获取heapster URL

  • 扩展/收缩节点数的重新调度程序需要每30分钟启动一次。最好的办法是什么。代码中是否有一些接口或东西我可以使用,或者我应该编写一个代码段,每30分钟调用一次并将其放入主循环中

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

    第一部分:

    关于使用kubedns查找heapster并查询RESTAPI,您所说的一切都很好

    您还可以编写一个客户端接口,将接口抽象到heapster,这将有助于单元测试

    看看这个度量客户机: 它并不能完全满足您的需要:它获得的是每吊舱的统计数据,而不是每集群或每节点的统计数据。但是你可以修改它

    在函数
    getForPods
    中,您可以在此处看到解析heapster服务并连接到该服务的代码:

            resultRaw, err := h.client.Services(h.heapsterNamespace).
                ProxyGet(h.heapsterService, metricPath, map[string]string{"start": startTime.Format(time.RFC3339)}).
                DoRaw()
    
    其中heapternamespace是“kube系统”,heapterservice是“heapter”

    该度量客户机是“horizonal pod autoscaler”实现的一部分。它解决了一个稍微不同的问题,但是如果你还没有解决的话,你应该看看它。如果在此处描述:

    仅供参考:Heapster REST API定义如下: 您应该四处看看,看看是否有适合您的节点级或集群级CPU指标

    第2部分:

    没有用于收缩节点的标准接口。对于每一个云提供商来说都是不同的。如果您在本地,则无法收缩节点

    相关讨论:

    旁注:在kubernetes开发人员中,我们通常在谈论跨机器重新平衡pod时使用术语“重新调度程序”,即从一台机器上移除pod并在另一台机器上创建相同类型的pod。这和你说的建筑是两码事。我们还没有构建一个重新调度程序,但这里有一个如何构建的概要: