【问题标题】:Kubernetes: How to apply Horizontal Pod (HPA) autoscaling for a RC which contains multiple containers?Kubernetes:如何为包含多个容器的 RC 应用 Horizo​​ntal Pod (HPA) 自动缩放?
【发布时间】:2017-08-29 09:42:47
【问题描述】:

我曾尝试将 HPA 用于仅包含一个容器的 RC,它工作得非常好。但是当我有一个包含多个容器的 RC(即,一个包含多个容器的 pod)时,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 

【问题讨论】:

    标签: kubernetes prometheus container-image


    【解决方案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
    

    【讨论】:

    • 感谢您提供此信息。确实有帮助
    猜你喜欢
    • 1970-01-01
    • 2021-01-26
    • 2020-01-16
    • 2020-09-08
    • 1970-01-01
    • 2019-11-25
    • 2018-10-09
    • 2020-04-16
    • 1970-01-01
    相关资源
    最近更新 更多