Kubernetes根据网络利用率或每秒请求进行扩展

时间:2018-02-09 14:34:27

标签: docker kubernetes google-cloud-platform autoscaling

有没有办法根据网络利用率而不是基于内存或CPU来扩展Kubernetes节点?

例如,假设您向负载均衡器后面的几个节点发送了数千个请求。 CPU没有挣扎或内存,但因为每秒有数千个请求,所以需要额外的节点来提供服务。你怎么能在Google Cloud Kubernetes中做到这一点?

我一直在研究,但我似乎无法找到任何类型缩放的参考,我猜我不是唯一遇到这个问题的人。所以我想知道你们中是否有人知道任何最佳实践解决方案。

我想理想的解决方案是每个节点有一个pod接收请求,并根据更多请求创建更多节点,并根据此扩展或缩小。

3 个答案:

答案 0 :(得分:2)

我已经使用 this 自定义指标在我的 gke 集群上实现了这一点。

这是我的 HPA 配置示例:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-name
  namespace: your-namespace
  annotations:
    metric-config.external.prometheus-query.prometheus/interval: 30s
    metric-config.external.prometheus-query.prometheus/prometheus-server: http://your-prometheus-server-ip
    metric-config.external.prometheus-query.prometheus/istio-requests-total: |
      sum(rate(istio_requests_total{reporter="destination", destination_workload="deployment-name", destination_service_namespace="your-namespace"}[2m]))
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: deployment-name
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: External
    external:
      metric:
        name: prometheus-query
        selector:
          matchLabels:
            query-name: istio-requests-total
      target:
        type: AverageValue
        averageValue: 7

答案 1 :(得分:0)

这是可能的,您必须使用 Prometheus Adaptor 来配置自定义规则以生成自定义指标

link包含有关如何设置Prometheus,安装适配器以及使用自定义指标应用配置的更多详细信息。

答案 2 :(得分:0)

我认为 HPA Horizo​​ntal Pod Autoscaler )以及 Cluster Autoscaler 会起到神奇的作用。

看看这个-https://medium.com/google-cloud/kubernetes-autoscaling-with-istio-metrics-76442253a45a