
一、KEDA核心资源介绍
官网链接:https://keda.sh/docs/2.16/authentication-providers/
1.1 什么是KEDA核心资源
KEDA主要核心资源分为三个,具体如下:
-
1)ScaledObject:用于控制Deployment等资源的副本数,可以指定多种事件和消息来源控制资源的副本数,同时支持Scale to Zero
-
2)ScaledJob:用于触发一次性Job任务,可以根据多种外部事件源触发创建一次性任务,主要用于处理批处理任务或临时任务,类似Serverless
-
3)TriggerAuthentication:用于管理KEDA Scaler与外部事件源(如RabbitMQ、AWS SQS、Azure Queue等)之间的身份验证和授权,支持环境变量、ConfigMap、Secret等
1.2 KEDA核心资源如何定义
1.2 ScaledObject资源定义
说明:ScaledObject的缩写为so
定义一个ScaledObject资源
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: rabbitmq-consumer-scaler # ScaledObject名称
namespace: default # 命名空间需与目标Deployment一致
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment # 不指定的话,默认就是Deployment
name: rabbitmq-consumer # 需要扩缩容的目标Deployment名称
pollingInterval: 30 # 每30秒检查一次队列
cooldownPeriod: 300 # 扩缩容后等待5分钟
minReplicaCount: 0 # 允许缩容到0实例(冷启动)
maxReplicaCount: 10 # 最多扩展到10个副本
triggers:
- type: rabbitmq # 触发器类型(RabbitMQ)
metadata:
host: amqp://user:pass@rabbitmq.default.svc.cluster.local:5672 # RabbitMQ服务地址
queueName: orders # 监听的队列名称
queueLength: "50" # 触发扩容的队列消息积压阈值(超过50条消息时扩容)
activationQueueLength: "1" # 触发从0→1的最小消息数(至少1条消息才启动Pod)
authenticationRef:
name: rabbitmq-credentials # 引用TriggerAuthentication或Secret存储密码(安全推荐)
关键字段说明:
-
scaleTargetRef -
指向需要扩缩容的Kubernetes资源(如Deployment、StatefulSet)。
-
minReplicaCount: 0 -
KEDA核心特性:允许缩容到0实例(无请求时节省资源)。
-
triggers[].type -
指定事件源类型(支持30+类型,如
prometheus、kafka、aws-sqs-queue等)。 -
metadata -
定义事件源的连接参数(例如RabbitMQ队列名称、触发阈值)。
-
authenticationRef -
推荐通过
TriggerAuthentication或Kubernetes Secret管理敏感信息(如密码)。
1.2 ScaledJob资源定义
说明:ScaledJob的缩写为sj
定义一个ScaledJob资源
apiVersion: keda.sh/v1alpha1
kind: ScaledJob
metadata:
name: rabbitmq-batch-job-scaler # ScaledJob名称
namespace: default
spec:
jobTargetRef:
backoffLimit: 4 # 任务失败重试次数
parallelism: 10 # 最大并行任务数
completions: 1 # 每个Job需完成的任务数
template:
spec:
containers:
- name: video-processor
image: xxx:test # 你的镜像
pollingInterval: 30 # 检查队列状态的时间间隔(秒)
maxReplicaCount: 10 # 最大并行Job实例数
successfulJobsHistoryLimit: 3 # 保留成功Job的历史记录数
failedJobsHistoryLimit: 1 # 保留失败Job的历史记录数
triggers:
- type: rabbitmq # 触发器类型
metadata:
host: amqp://user:pass@rabbitmq.default.svc.cluster.local:5672 # RabbitMQ地址
queueName: orders # 监听的队列名称
queueLength: "10" # 每10条消息触发一个Job
activationQueueLength: "1" # 至少1条消息才启动Job
authenticationRef:
name: rabbitmq-credentials # 引用安全凭证(推荐TriggerAuthentication)
关键字段说明:
-
jobTargetRef -
定义要创建的Kubernetes Job模板(核心业务逻辑)。
-
parallelism:单个Job允许的最大并行Pod数。 -
backoffLimit:任务失败后的重试次数。 -
maxReplicaCount: 20 -
允许同时运行的最大Job实例数(例如:队列有200条消息时,触发20个Job,每个处理10条)。
-
queueLength: "10" -
每条消息对应一个Job:若设置为
1,则每条消息生成一个Job。 -
批量处理:设置为
10表示每10条消息触发一个Job(适合批量任务)。 -
successfulJobsHistoryLimit -
控制保留的历史成功Job数量,避免资源浪费。
1.2 TriggerAuthentication资源定义
说明:TriggerAuthentication的缩写为ta
1.2 从 Kubernetes Secret 中获取认证信息(secretTargetRef)
1、定义一个Secret资源
apiVersion: vl
kind: Secret
metadata:
name: mysql-secrets
namespace: my-project
type: Opaque
dataString:
mysql conn_str: user:password@tep (mysql:3306)/stats db
2、定义TriggerAuthentication资源
apiVersion: keda.sh/vlalphal
kind: TriggerAuthentication
metadata:
name: keda-trigger-auth-mysql-secret
namespace: my-project
spec:
secretTargetRef:
- parameter:connectionString #Scaler参数名字
name: mysql-secrets #secret名称
key: mysql_conn_str #key名称
3、定义一个ScaledObject资源进行绑定
apiVersion: keda.sh/vlalphal
kind: ScaledObject
metadata:
name: mysql-scaledobject
namespace: my-project
spec:
secretTargetRef:
name: worker
triggers:
- type: mysql
authenticationRef:
name: keda-trigger-auth-mysql-secret
1.2 从 Pod 环境变量中获取认证信息(env)
configMap形式:
configMapTargetRef:
- parameter: connectionString
name: my-keda-configmap-resource-name
key: azure-storage-connectionstring
env形式:
env
- parameter: region
name: my-env-var
containerName: my-container







暂无评论内容