38
loading...
This website collects cookies to deliver better user experience
Um componente leve e de finalidade única que pode ser adicionado a qualquer cluster do Kubernetes. Funciona junto com componentes Kubernetes padrão, como o Horizontal Pod Autoscaler (HPA) e pode estender a funcionalidade sem sobrescrever ou duplicação.
Retirado da documentação oficial
0
a N-instâncias
com base em sua configuração no ScaledObject.helm repo add kedacore https://kedacore.github.io/charts
helm repo update
kubectl create ns keda
helm install keda kedacore/keda --namespace keda
kubectl get deployment -n keda
NAME READY UP-TO-DATE AVAILABLE AGE
keda-operator 1/1 1 1 1h
keda-operator-metrics-apiserver 1/1 1 1 1h
kubectl api-resources --api-group=keda.sh
NAME SHORTNAMES APIGROUP NAMESPACED KIND
scaledjobs sj keda.sh true ScaledJob
scaledobjects so keda.sh true ScaledObject
triggerauthentications ta,triggerauth keda.sh true TriggerAuthentication
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: kafka-consumer-scaler
labels:
deploymentName: my-kafka-consumer-service
namespace: sample
spec:
scaleTargetRef:
deploymentName: my-kafka-consumer-service
pollingInterval: 1 # Optional. Default: 30 seconds
cooldownPeriod: 30 # Optional. Default: 300 seconds
minReplicaCount: 0 # Optional. Default: 0
maxReplicaCount: 10 # Optional. Default: 100
triggers:
- type: kafka
metadata:
topic: test-topic-1
# brokerList: my-cluster-kafka-bootstrap.kafka:9092 - deprecated
bootstrapServers: my-cluster-kafka-bootstrap.kafka:9092
consumerGroup: my-kafka-consumerGroup
lagThreshold: '5' # Default: 10
offsetResetPolicy: latest
allowIdleConsumers: false
authenticationRef:
name: keda-trigger-auth-kafka-credential
## Optional: list of topics to trigger
#- type: kafka
# metadata:
# topic: test-topic-2
# bootstrapServers: my-cluster-kafka-bootstrap.kafka:9092
# consumerGroup: my-kafka-consumerGroup
# lagThreshold: '5' # Default: 10
# offsetResetPolicy: latest
# allowIdleConsumers: false
# authenticationRef:
# name: keda-trigger-auth-kafka-credential
O ScaledObject, TriggerAuthentication e a implantação referenciada em deploymentName precisam estar no mesmo namespace.
minReplicaCount
e maxReplicaCount
. Para evitar rebalanceamento de partições no Kafka E/OU evitar que muitos pods sejam iniciados - consumindo todos os recursos do cluster 💥.offsetResetPolicy
pode ser earliest ou latest. Como o KEDA vai percorrer todos os tópicos, vale a pena entender como o código (negócio) se comporta com duplicidade de eventos. Por padrão, o número de réplicas não excederá o número de partições em um tópico. Ou seja, se maxReplicaCount for definido mais do que o número de partições, o escalonador não vai atingir o valor definido. Caso queira mudar este comportamento, ajuste o parâmetro allowIdleConsumers
para true
. Porém, se houver mais número de consumidores do que número de partições em um tópico, o consumidor extra terá que ficar ocioso.
list
e describe
) em todos os grupos e tópicos e referenciamos no TriggerAuthentication o secret com este usuário:apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
name: keda-trigger-auth-kafka-credential
namespace: sample
spec:
secretTargetRef:
- key: sasl
name: keda-credentials
parameter: sasl
- key: username
name: keda-credentials
parameter: username
- key: password
name: keda-credentials
parameter: password
38