繁体   English   中英

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

[英]Horizontal Pod Autoscaler (HPA): Current utilization: <unknown> with custom namespace

更新:我在 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

有人可以建议这里有什么问题吗?

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

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

请注意,如果 pod 的某些容器没有设置相关的资源请求,则不会定义 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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM