Horizo ntal Pod Autoscaler(HPA):当前利用率: 自定义命名空间

问题描述 投票:2回答:2

更新:我在kops的帮助下部署在AWS云上。

我正在使用HPA进行我的kubernete部署之一。在测试示例应用程序时,我使用默认命名空间进行部署,我可以看到公开的指标如下所示(显示当前利用率为0%)

$ kubectl  run busybox --image=busybox --port 8080           -- sh -c "while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; \
         env | grep HOSTNAME | sed 's/.*=//g'; } | nc -l -p  8080; done"


$ kubectl get hpa
NAME          REFERENCE                TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
busybox       Deployment/busybox       0%/20%    1         4         1          14m

但是当我使用自定义命名空间(例如:test)进行部署时,当前的利用率显示为未知

 $ kubectl get hpa --namespace test
NAME        REFERENCE            TARGETS                          MINPODS   MAXPODS   REPLICAS   AGE
busybox     Deployment/busybox   <unknown>/20%                    1         4         1          25m

有人可以建议这里有什么不对吗?

amazon-web-services kubernetes autoscaling kops
2个回答
1
投票

为了将来,您需要满足HPA工作的一些条件。您需要在群集上运行metrics服务器或heapster。重要的是在命名空间的基础上设置资源。

您没有在集群运行的环境中提供,但在GKE中默认情况下您有一个cpu资源集(100m),但您需要在新的名称空间中指定它:

请注意,如果某些pod的容器没有设置相关的资源请求,则不会定义pod的CPU利用率,并且autoscaler不会对该度量标准采取任何操作。

在你的情况下,我不确定为什么它在重新部署后确实有效,因为没有足够的信息。但是为了将来记住:

1)您想要扩展的对象,HPA应该在同一名称空间中

2)在每个命名空间的CPU上设置资源,或者只需添加--requests=cpu=value,以便HPA能够根据它进行扩展。

更新:

对于您的特定情况:

1)kubectl run busybox --image=busybox --port 8080 -n test --requests=cpu=200m -- sh -c "while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; \ env | grep HOSTNAME | sed 's/.*=//g'; } | nc -l -p 8080; done"

2)kubectl autoscale deployment busybox --cpu-percent=50 --min=1 --max=10 -n test


0
投票

尝试在遇到此问题的命名空间中运行以下命令,看看是否有任何指针。

  • kubectl get --raw /apis/metrics.k8s.io/ - 这应该显示一个有效的JSON
  • 另外,做一个kubectl describe hpa name_of_hpa_deployment - 这可能表明你的hpa部署在该命名空间中是否有任何问题。
© www.soinside.com 2019 - 2024. All rights reserved.