簡體   English   中英

事件中心觸發 Azure Function 在帶有 KEDA 的 AKS 上運行不會橫向擴展

[英]Event Hub triggered Azure Function running on AKS with KEDA does not scale out

我已經在 AKS 上部署了一個事件中心觸發 Azure Function 編寫的 Java。 function 應該使用 KEDA 橫向擴展。 function 已正確觸發並正常工作,但當負載增加時它不會擴展。 我已經向 function 實現添加了睡眠調用,以確保它不會過快地消耗事件,並且應該強制橫向擴展,但這也沒有顯示任何變化。

kubectl get hpa 顯示以下 output

NAME                   REFERENCE                TARGETS       MINPODS   MAXPODS   REPLICAS   AGE
keda-hpa-eventlogger   Deployment/eventlogger   64/64 (avg)   1         20        1          3m41s

這似乎是第一個指示某些事情不正確的指標,因為我假設目標列中的第一個數字是事件中心中未處理事件的數量。 無論我向中心注入多少事件,這都保持不變。

Function 是使用以下 Kube.netes 部署清單部署的

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 的kubectl describe ScaledObject

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

所以我有點卡住了,因為我沒有看到任何錯誤,但它仍然沒有按預期運行。

版本:

能夠找到解決問題的方法。

事件中心觸發 Azure 部署在 AKS 上的函數顯示與 Azure 應用服務上的函數顯示相同的縮放特征:

每個分區只能有一個消費者,以允許對每個分區進行排序。 此特征否決了 Kube.netes 部署清單中的 maxReplicaCount。

因此,為了解決我自己的問題:通過增加 Event Hub 的分區,我得到每個分區一個 pod,KEDA 按預期擴展工作負載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM