根据我们产品的设计,我们想禁用HPA的比例,它能被禁用吗?
发布于 2020-10-07 16:15:10
我偶然发现了这篇文章,看起来你可以禁用刻度。文献资料在底部包含了这个示例。当最初提出问题时,这个特性可能是不可用的。
禁用的selectPolicy值关闭了对给定方向的缩放。因此,为了防止缩小规模,将使用以下策略:
behavior:
scaleDown:
selectPolicy: Disabled发布于 2020-02-13 17:00:50
不,这不可能。
1)您可以删除HPA并使用所需的num来创建简单的部署。
2)您可以使用用户“坦率”在HorizontalPodAutoscaler:有可能限制规模down?#65097问题上提供的解决方案:
我做了一个非常麻烦的解决方案,我有一个每3分钟运行一次的cron作业,并将HPA上的最小副本设置为$currentReplicas - $downscaleLimit。如果有人想使用它,它就在这里:https://gist.github.com/frankh/050943c72273cf639886b43e98bc3caa
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hpa-downscale-limiter
namespace: kube-system
spec:
schedule: "*/3 * * * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
serviceAccountName: hpa-downscale-limiter
containers:
- name: kubectl
image: frankh/k8s-kubectl:1.10.3
command: ["/bin/bash", "-c"]
args:
- |
set -xeuo pipefail
namespaces=$(kubectl get hpa --no-headers --all-namespaces | cut -d' ' -f1 | uniq)
for namespace in $namespaces; do
hpas=$(kubectl get hpa --namespace=$namespace --no-headers | cut -d' ' -f1)
for hpa in $hpas; do
echo "$(kubectl get hpa --namespace=$namespace $hpa -o jsonpath="{.spec.minReplicas} {.status.desiredReplicas} {.metadata.annotations.originalMinimum} {.metadata.annotations.downscaleLimit}")" > tmpfile
read -r minReplicas desiredReplicas originalMinimum downscaleLimit < tmpfile
if [ -z "$originalMinimum" ]; then
kubectl annotate hpa --namespace=$namespace $hpa originalMinimum="$minReplicas"
originalMinimum=$minReplicas
fi
if [ -z "$downscaleLimit" ]; then
downscaleLimit=1
fi
target=$(( $desiredReplicas - $downscaleLimit ))
target=$(( $target > $originalMinimum ? $target : $originalMinimum ))
if [ "$minReplicas" -ne "$target" ]; then
kubectl patch hpa --namespace=$namespace $hpa --patch="{\"spec\": {\"minReplicas\": "$target"}}"
fi
done
done
restartPolicy: OnFailure
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: hpa-downscale-limiter
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: hpa-downscale-limiter-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- name: hpa-downscale-limiter
kind: ServiceAccount
namespace: kube-system发布于 2020-02-13 18:12:30
水平Pod自动分频器根据观察到的CPU利用率自动缩放复制控制器、部署、复制集或有状态集中的荚数(或者,有了beta支持,您也可以使用应用程序提供的度量标准)。从最基本的角度来看,水平Pod自动分频器控制器的工作原理是期望的度量值与当前的度量值之间的比率:
desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]如果在HorizontalPodAutoscaler中指定了多个度量,则对每个度量进行此计算,然后选择所需的最大副本计数。但是,在记录比额表建议之前。控制器考虑可配置窗口中的所有建议,从该窗口中选择最高的建议。此值可以使用默认为5分钟的--horizontal-pod-autoscaler-downscale-stabilization标志进行配置。这意味着规模缩小将逐渐发生,消除快速波动的度量值的影响。
基于我所解释的,这意味着不可以。但是对于尖峰流量,您仍然可以使用:--horizontal-pod-autoscaler-downscale-stabilization标志。
https://stackoverflow.com/questions/60212727
复制相似问题