我有一个k8s集群,我以以下方式安装了openfaas:
helm repo add openfaas https://openfaas.github.io/faas-netes/
helm repo update
kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
helm upgrade openfaas --install openfaas/openfaas
--namespace openfaas
--set generateBasicAuth=true
--set serviceType=LoadBalancer
--set clusterRole=true
--set functionNamespace=openfaas-fn
现在,我有以下stack.yml
:
version: 1.0
provider:
name: openfaas
gateway: http://localhost:31112
functions:
my-function:
lang: csharp
handler: ./MyFunction
image: my-function:my-tag
labels:
com.openfaas.scale.min: 1
com.openfaas.scale.max: 1
com.openfaas.scale.factor: 0
然后用上面提到的标签(我在openfaas文档中找到的)装饰部署的函数。但是,如果我查看控制函数pod的副本集,就会发现它带有以下注释:
deployment.kubernetes.io/max-replicas=2
后一个注释对函数的复制集在实际函数的缩放上有什么影响?如果我设置
com.openfaas.scale.max: 3
作为我的函数的标签?
我想确保真正控制我的函数的水平缩放。我该怎么做?
OpenFaas本身配备了自动缩放器和自己的警报管理器:
OpenFaaS附带一个自动缩放规则,该规则定义在已挂载的AlertManager配置文件。AlertManager读取使用情况(每秒请求数)指标,以便知道何时执行向API网关发送一个警报。
在阅读之后,我发现OpenFaas的autoscaler/alertmanager更关注API命中率,而Kubernetes的HPA更关注CPU和内存使用,所以这一切都取决于你到底需要什么。
你有两个不同的注释用于两个不同的缩放工具。deployment.kubernetes.io/max-replicas=2
用于Kubernetes HPA,com.openfaas.scale.max: 1
用于OpenFaas自动缩放器。
OpenFaas有一个很好的例子,说明如何使用HPA代替内置的scaler。您还可以使用自定义Prometheus指标与HPA,如下所述。