水平Pod自动缩放器(HPA):当前利用率:<未知>,带有自定义名称空间

时间:2019-04-01 10:27:30

标签: amazon-web-services kubernetes autoscaling kops

更新:我正在借助kops部署在AWS云上。

我正在为其中的kubernete部署应用HPA。 在测试示例应用程序时,我使用默认名称空间进行了部署,可以看到如下所示的指标(显示当前利用率为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

有人可以在这里提出什么问题吗?

2 个答案:

答案 0 :(得分:1)

将来,您需要满足一些条件才能使HPA正常工作。您需要在群集上运行指标服务器或堆积器。重要的是基于名称空间设置资源。

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

  

请注意,如果某些吊舱的容器没有   相关资源请求集,则pod的CPU利用率将不会   定义,自动缩放器将不对该指标执行任何操作。

在您的情况下,由于信息不足,我不确定为什么重新部署后它仍然可以工作。但是为了将来,请记住:

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

答案 1 :(得分:0)

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

  • kubectl get --raw /apis/metrics.k8s.io/-这应该显示有效的JSON
  • 还要执行kubectl describe hpa name_of_hpa_deployment-这可能表明在该命名空间中hpa部署是否存在任何问题。