Kubernetes:如何为包含多个容器的 RC 应用 Horizontal Pod (HPA) 自动缩放?
Kubernetes: How to apply Horizontal Pod (HPA) autoscaling for a RC which contains multiple containers?
我已经尝试将 HPA 用于仅包含一个容器的 RC,并且它工作得很好。但是当我有一个包含多个容器的 RC(即包含多个容器的 pod)时,HPA 无法抓取 CPU 利用率并将状态显示为 "Unknown",如下所示。如何为具有多个容器的 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
无论如何,可以为具有多个容器的 RC/Deployment/Replica-set 设置 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
我已经尝试将 HPA 用于仅包含一个容器的 RC,并且它工作得很好。但是当我有一个包含多个容器的 RC(即包含多个容器的 pod)时,HPA 无法抓取 CPU 利用率并将状态显示为 "Unknown",如下所示。如何为具有多个容器的 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
无论如何,可以为具有多个容器的 RC/Deployment/Replica-set 设置 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