我在Windows上使用 minikube ,只有一个节点“ master”。
已部署 的spring boot应用程序具有REST端点,该端点提供了其当前服务的客户端数量 。我希望水平扩展或在请求达到一定限制时自动旋转广告连播。
Lets say:
There is 1 pod in the cluster.
If the request limit reached 50 (for Pod 1), spin up a new pod.
If the request limit reached 50 for Pod 1 and Pod 2, spin up a new Pod (Pod 3).
我尝试研究如何实现这一目标,但我一无所获。 我所能找到的就是使用HorizontalPodAutoscaler(HPA)的CPU使用率进行横向扩展。 收到有关如何使用 Kubernetes HPA 实现此目标的指南会有所帮助。
答案 0 :(得分:0)
我相信您可以从autoscaling on custom metrics article开始。据我所知-这可以通过结合使用自定义指标和Prometheus Adapter for Kubernetes Metrics APIs(使用Prometheus实现custom.metrics.k8s.io API)来实现。
Prometheus Adapter for Kubernetes Metrics APIs repo包含Kubernetes resource metrics API和custom metrics API的实现。
因此,此适配器适合与Kubernetes 1.6+中的autoscaling / v2 Horizontal Pod Autoscaler一起使用。
来自autoscaling on custom metrics的信息:
请注意,您可以指定CPU以外的其他资源指标。通过 默认情况下,唯一支持的其他资源指标是内存。这些 资源不会在群集之间更改名称,应该 只要metrics.k8s.io API可用,它总是可用。
这些替代指标类型中的第一个是pod指标。这些指标描述了容器,并在各个容器中平均在一起,然后与目标值进行比较以确定副本数。除了只支持目标类型的AverageValue之外,它们的工作方式与资源指标非常相似。
使用以下指标块指定Pod指标:
type: Pods
pods:
metric:
name: packets-per-second
target:
type: AverageValue
averageValue: 1k
第二种替代指标类型是对象指标。这些度量标准在同一名称空间中描述了一个不同的对象,而不是描述了pod。指标不一定是从对象中获取的;他们只描述它。对象指标支持“值”和“平均值”的目标类型。使用Value,可以将目标直接与API返回的指标进行比较。使用AverageValue时,自定义指标API返回的值将被除以Pod的数量,然后再与目标进行比较。以下示例是“每秒请求数”指标的YAML表示形式。
type: Object
object:
metric:
name: requests-per-second
describedObject:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
name: main-route
target:
type: Value
value: 2k
也许下面的内容对您将来的调查也会有所帮助:
Autoscaling on more specific metrics
Autoscaling on metrics not related to Kubernetes objects
希望有帮助