首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事件集线器触发Azure函数运行在带有KEDA的AKS上不扩展

事件集线器触发Azure函数运行在带有KEDA的AKS上不扩展
EN

Stack Overflow用户
提问于 2022-04-17 10:40:33
回答 1查看 470关注 0票数 1

我在AKS上部署了一个事件中心触发了用Java编写的Azure函数。该功能应该使用KEDA扩展。该函数是正确的触发和工作,但它没有扩展时,负载增加。我在函数实现中添加了睡眠调用,以确保它不会太快地烧掉事件,并且应该被迫扩展,但这也没有显示出任何变化。

kubectl get hpa显示了以下输出

代码语言:javascript
复制
NAME                   REFERENCE                TARGETS       MINPODS   MAXPODS   REPLICAS   AGE
keda-hpa-eventlogger   Deployment/eventlogger   64/64 (avg)   1         20        1          3m41s

这似乎是一些不正确的第一个指标,因为我假设目标列中的第一个数字是事件中心中未处理的事件的数量。不管我投入到集线器中的事件有多少次,这都是一样的。

该函数使用以下Kubernetes部署声明进行部署

代码语言:javascript
复制
data:
  AzureWebJobsStorage: <removed>
  FUNCTIONS_WORKER_RUNTIME: amF2YQ==
  EventHubConnectionString: <removed>
apiVersion: v1
kind: Secret
metadata:
  name: eventlogger
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: eventlogger
  labels:
    app: eventlogger
spec:
  selector:
    matchLabels:
      app: eventlogger
  template:
    metadata:
      labels:
        app: eventlogger
    spec:
      containers:
      - name: eventlogger
        image: <removed>
        env:
        - name: AzureFunctionsJobHost__functions__0
          value: eventloggerHandler
        envFrom:
        - secretRef:
            name: eventlogger
        readinessProbe:
          failureThreshold: 3
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 240
          httpGet:
            path: /
            port: 80
            scheme: HTTP
        startupProbe:
          failureThreshold: 3
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 240
          httpGet:
            path: /
            port: 80
            scheme: HTTP
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: eventlogger
  labels:
    app: eventlogger
spec:
  scaleTargetRef:
    name: eventlogger
  pollingInterval: 5
  cooldownPeriod: 5
  minReplicaCount: 0
  maxReplicaCount: 20
  triggers:
  - type: azure-eventhub
    metadata:
      storageConnectionFromEnv: AzureWebJobsStorage
      connectionFromEnv: EventHubConnectionString
---

事件集线器的连接字符串包含在EntityPath=中描述的“KEDA事件中心扩展文档”节,并对事件集线器名称空间具有管理权限。

kubectl describe ScaledObject的输出是

代码语言:javascript
复制
Name:         eventlogger
Namespace:    default
Labels:       app=eventlogger
              scaledobject.keda.sh/name=eventlogger
Annotations:  <none>
API Version:  keda.sh/v1alpha1
Kind:         ScaledObject
Metadata:
  Creation Timestamp:  2022-04-17T10:30:36Z
  Finalizers:
    finalizer.keda.sh
  Generation:  1
  Managed Fields:
    API Version:  keda.sh/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .:
          f:kubectl.kubernetes.io/last-applied-configuration:
        f:labels:
          .:
          f:app:
      f:spec:
        .:
        f:cooldownPeriod:
        f:maxReplicaCount:
        f:minReplicaCount:
        f:pollingInterval:
        f:scaleTargetRef:
          .:
          f:name:
        f:triggers:
    Manager:      kubectl-client-side-apply
    Operation:    Update
    Time:         2022-04-17T10:30:36Z
    API Version:  keda.sh/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:finalizers:
          .:
          v:"finalizer.keda.sh":
        f:labels:
          f:scaledobject.keda.sh/name:
      f:status:
        .:
        f:conditions:
        f:externalMetricNames:
        f:lastActiveTime:
        f:originalReplicaCount:
        f:scaleTargetGVKR:
          .:
          f:group:
          f:kind:
          f:resource:
          f:version:
        f:scaleTargetKind:
    Manager:         keda
    Operation:       Update
    Time:            2022-04-17T10:30:37Z
  Resource Version:  1775052
  UID:               3b6a68c1-c3b9-4cdf-b5d5-41a9721ac661
Spec:
  Cooldown Period:    5
  Max Replica Count:  20
  Min Replica Count:  0
  Polling Interval:   5
  Scale Target Ref:
    Name:  eventlogger
  Triggers:
    Metadata:
      Connection From Env:          EventHubConnectionString
      Storage Connection From Env:  AzureWebJobsStorage
    Type:                           azure-eventhub
Status:
  Conditions:
    Message:  ScaledObject is defined correctly and is ready for scaling
    Reason:   ScaledObjectReady
    Status:   False
    Type:     Ready
    Message:  Scaling is performed because triggers are active
    Reason:   ScalerActive
    Status:   True
    Type:     Active
    Status:   Unknown
    Type:     Fallback
  External Metric Names:
    s0-azure-eventhub-$Default
  Last Active Time:        2022-04-17T10:30:47Z
  Original Replica Count:  1
  Scale Target GVKR:
    Group:            apps
    Kind:             Deployment
    Resource:         deployments
    Version:          v1
  Scale Target Kind:  apps/v1.Deployment
Events:
  Type    Reason              Age   From           Message
  ----    ------              ----  ----           -------
  Normal  KEDAScalersStarted  10s   keda-operator  Started scalers watch
  Normal  ScaledObjectReady   10s   keda-operator  ScaledObject is ready for scaling

所以我有点沮丧,因为我没有看到任何错误,但它仍然没有像预期的那样表现。

版本:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-17 12:09:43

找到了解决问题的办法。

事件集线器触发AKS上部署的Azure函数显示与App上Azure函数相同的缩放特性:

为了允许每个分区排序,每个分区只有一个使用者。这个特性在Kubernetes部署声明中凌驾于maxReplicaCount之上。

因此,为了解决我自己的问题:通过增加事件集线器的分区,我得到了每个分区的一个结荚,并且KEDA按照预期对工作负载进行了缩放。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71901186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档