Escalando aplicações automaticamente no Kubernetes usando KEDA
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
Foi lançado no fim de 2019 (anúncio oficial) e é fruto de uma parceria entre Microsoft & Red Hat.
E ele cumpre bem o lema, que é: “Application autoscaling made simple”.
Kubernetes의 기본 구성 허용 구성HPA은 CPU 및 메모리 메트릭으로 제공됩니다.
Se quiser escalar as aplicações utilizando outro tipo de métrica, por exemplo, lags de eventos ou filas, você precisa primeiro criar um adaptador de métricas (custom metrics) para extrair as métricas da fonte desejada. Entretanto se precisar obter métricas de várias fontes usando vários adaptadores, você está sem sorte porque apenas um por vez é compatível (a menos que tenha mudado최근).
Já o KEDA extrai de umavariedade de fontes는 ScaledObject가 없는 구성에서
0
및 N-instâncias
컴베이스에 이식된 자동 크기를 자동으로 설정합니다.Outro ponto interessante é que o KEDA não "reinventa a roda"and não construiu seu próprio mecanismo de escalonamento, se aproveitando de Kubernetes and dos secrets (TriggerAuthentication) já usados pelas aplicações.
인스탈란도 오 케다
As instruções para implantar o KEDA são muito simples e podem ser encontradasaqui .
기존 KEDA는 클러스터 Kubernetes에 이식할 수 있습니다.
Vamos는 전성기 기회를 사용합니다.
helm repo add kedacore https://kedacore.github.io/charts
helm repo update
kubectl create ns keda
helm install keda kedacore/keda --namespace keda
teremos 2 배포(KEDA Operator 및 KEDA Metrics API) 설치 시 클러스터 없음…
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
e mais alguns CRDs disponíveis:
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
ScaledJobs*/ScaledObject: ScaledJobs/ScaledObjects 맵은 작업/배포가 차원을 넘어설 때 발생합니다.
TriggerAuthentication: 이벤트를 모니터링하기 위해 자동 구성에 필요한 재귀적 인증이 필요합니다.
또는 HPA 음성으로 "ScaledObject"항목이 있습니다.
- O KEDA não apenas dimensiona deployments, mas também pode dimensionar seus jobs do Kubernetes. Em vez de ter muitos eventos processados em sua implantação e aumentar ou diminuir com base no número de mensagens que precisam ser consumidas, o KEDA pode ativar um trabalho para cada mensagem na origem do evento.
EXEMPLO COM 카프카
Vamos dar uma olhada mais de perto noScaledObject eKafka trigger .
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
는 가장 초기 또는 최신입니다. 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
paratrue
. 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.
Kafka com permissão de somente leitura(
list
e describe
)는 TriggerAuthentication에서 비밀 인증을 허용하지 않고 주제와 참조를 허용하지 않습니다.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
참조:
https://keda.sh/docs/2.3/
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
https://cloudblogs.microsoft.com/opensource/2020/04/06/kubernetes-event-driven-autoscaling-keda-cncf-sandbox-project/
https://keda.sh/resources/
아그라데시멘토스
Obrigado à que me incentivaram a escrever este artigo e revisaram o texto:
)
Reference
이 문제에 관하여(Escalando aplicações automaticamente no Kubernetes usando KEDA), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/willianccs/escalando-aplicacoes-automaticamente-no-kubernetes-usando-keda-c41텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)