Kubernetes:如何对包含多个容器的RC应用Horizo​​ntal Pod(HPA)自动缩放?

时间:2017-08-29 09:42:48

标签: kubernetes prometheus container-image

我已经尝试将HPA用于只包含一个容器的RC,它的工作原理非常好。但是当我有一个带有多个容器的RC(即包含多个容器的容器)时,HPA无法提高CPU利用率并将状态显示为“未知”,如下所示。如何为具有多个容器的RC成功实施HPA。 Kuberentes文档没有关于此的信息,我也没有发现任何关于它的可能性。任何人都可以就此问题分享他们的经验或观点。非常感谢。

prometheus-watch-ssltargets-hpa   ReplicationController/prometheus   <unknown> / 70%   1         10        0          4s 

另外供您参考,以下是我的HPA yaml文件。

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: prometheus-watch-ssltargets-hpa
  namespace: monitoring
spec:
  scaleTargetRef:
    apiVersion: v1
    kind: ReplicationController
    name: prometheus
  minReplicas: 1
  maxReplicas: 5
  targetCPUUtilizationPercentage: 70 

1 个答案:

答案 0 :(得分:1)

无论如何都可以为具有多个容器的RC /部署/副本集设置HPA。在我的情况下,问题是资源限制请求的格式。我从这个link中发现,如果pod的容器没有设置相关的资源请求,那么将不会定义pod的CPU利用率,HPA也不会对该度量标准采取任何操作。在我的情况下,我使用如下的资源请求,这导致错误(但请注意,当我使用它与部署,复制控制器等时,以下资源请求格式工作正常。只有当我想要实施导致问题中提到的问题的HPA。)

    resources:
      limits:
        cpu: 2
        memory: 200M
      requests:
        cpu: 1
        memory: 100Mi

但是在改变它之后(例如,使用HPA可以理解的相关资源请求集),它可以正常工作。

    resources:
      limits:
        cpu: 2
        memory: 200Mi
      requests:
        cpu: 1
        memory: 100Mi