我有kuberentes集群。一位主人,一位工人。 我安装了用于自动扩展的metric-server,然后运行压力测试
$ kubectl run autoscale-test --image=ubuntu:16.04 --requests=cpu=1000m --command sleep 1800
deployment "autoscale-test" created
$ kubectl autoscale deployment autoscale-test --cpu-percent=25 --min=1 --max=5
deployment "autoscale-test" autoscaled
$ kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
autoscale-test Deployment/autoscale-test 0% / 25% 1 5 1 1m
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
autoscale-test-59d66dcbf7-9fqr8 1/1 Running 0 9m
kubectl exec autoscale-test-59d66dcbf7-9fqr8 -- apt-get update
kubectl exec autoscale-test-59d66dcbf7-9fqr8 -- apt-get install stress
$ kubectl exec autoscale-test-59d66dcbf7-9fqr8 -- stress --cpu 2 --timeout 600s &
stress: info: [227] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
一切正常,并且容器已自动缩放,但是此后,通过自动缩放创建的容器仍在运行,并且在压力测试后它们不会终止 hpa显示0%的cpu正在使用,但5个自动缩放的pod仍在运行
#kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
autoscale-test Deployment/autoscale-test 0%/25% 1 5 5 74m
#kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default autoscale-test-8f4d84bbf-7ddjw 1/1 Running 0 61m
default autoscale-test-8f4d84bbf-bmr59 1/1 Running 0 61m
default autoscale-test-8f4d84bbf-cxt26 1/1 Running 0 61m
default autoscale-test-8f4d84bbf-x9jws 1/1 Running 0 61m
default autoscale-test-8f4d84bbf-zbhvk 1/1 Running 0 71m
我等了一个小时,但没有任何反应
答案 0 :(得分:2)
从文档中:
-horizontal-pod-autoscaler-downscale-delay::此选项的值是一个持续时间,用于指定自动缩放器在当前缩放之后必须等待多长时间才能执行另一次缩放操作已经完成。默认值为5分钟(5m0s)。
注意:调整这些参数值时,应将集群运算符设置为 意识到可能的后果。如果延迟(冷却)值为 设置的时间过长,可能会抱怨“水平吊舱” Autoscaler对工作负载更改没有响应。但是,如果 延迟值设置得太短,副本集的规模可能保持不变 像往常一样动。
最后,在HPA调整目标之前,建议进行调整 被记录。管制员会考虑 可配置的窗口,从内部选择最高建议 那扇窗户。可以使用 --horizontal-pod-autoscaler-downscale-stabilization-window标志,默认为5分钟。这意味着将发生缩小 逐渐消除快速变化的指标的影响 值。