Autoscaling is currently only supported for transcoder pods.
The system utilizes a message queue (RabbitMQ) internally to schedule transcoder (data conversion) tasks to pods. Autoscaling can use the length of one of these queues as a scaling metric.
We recommend using Keda to configure autoscaling based on these metrics. Keda can easily be installed via Helm or directly with kubectl as described in the official documentation.
Currently a queue is created for each data format supported by instant3Dhub. We will need to create a Keda scaling configuration for each data format we want to allow to scale. The pod we scale will be the same for every format, as every transcoder pod is able to handle every format in the default configuration.
A list of available queues to scale can be found under the RabbitMQ management
interface of the instant3Dhub installation under
(default login is
Only queues starting with name
TranscoderService. can be configured for
autoscaling. Others are not yet supported.
Below is a configuration for scaling
i3dhub-transcodersvc pods based on the
JT queue. Pods will be scaled to a minimum of at least one and a maximum of 10.
The correct namespace must be set in both the connection string of
i3dhub-keda-rabbitmq-secret as well as the
TriggerAuthentication and the
apiVersion: v1 kind: Secret metadata: name: i3dhub-keda-rabbitmq-secret data: # base64 of amqp://guest:guest@i3dhub-rabbitmq.NAMESPACE.svc.cluster.local:5672 host: YW1xcDovL2d1ZXN0Omd1ZXN0QGkzZGh1Yi1yYWJiaXRtcS5OQU1FU1BBQ0Uuc3ZjLmNsdXN0ZXIubG9jYWw6NTY3Mg== --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: i3dhub-keda-trigger-auth-rabbitmq-conn namespace: NAMESPACE spec: secretTargetRef: - parameter: host name: i3dhub-keda-rabbitmq-secret key: host --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: rabbitmq-scaledobject namespace: NAMESPACE spec: scaleTargetRef: name: i3dhub-transcodersvc pollingInterval: 10 # Optional. Default: 30 seconds cooldownPeriod: 300 # Optional. Default: 300 seconds minReplicaCount: 1 # Optional. Default: 0 maxReplicaCount: 10 # Optional. Default: 100 triggers: - type: rabbitmq metadata: protocol: auto queueName: TranscoderService.l3dGen.openjt.l3d mode: QueueLength value: "40" authenticationRef: name: i3dhub-keda-trigger-auth-rabbitmq-conn