Auto-Scaling containers with
Nilesh Gule
@nileshgule | www.HandsOnArchitect.com
$whoami
{
“name” : “Nilesh Gule”,
“website” : “https://www.HandsOnArchitect.com",
“github” : “https://github.com/NileshGule"
“twitter” : “@nileshgule”,
“linkedin” : “https://www.linkedin.com/in/nileshgule”,
“email” : “nileshgule@gmail.com",
“likes” : “Technical Evangelism, Cricket”
}
Pros Cons
Scale k8s objects:
Kubectl scale –replicas=3 processor-deployment.yml
Kubectl scale –replicas=3 deployment/rabbitmq-consumer
Scale AKS cluster:
az aks scale --resource-group myResourceGroup 
--name myAKSCluster 
--node-count 5 
--nodepool-name <your node pool name>
Pros Cons
kubectl autoscale deployment php-apache 
--cpu-percent=50 
--min=1 
--max=10
Pros Cons
Pros Cons
Kubernetes-based Event Driven
Autoscaling
Azure Event Hub
Azure Service Bus Queues and Topics
Azure Storage Queues
Kafka
Prometheus
RabbitMQ
Redis Lists
Liiklus
NATS
AWS CloudWatch
AWS Simple Queue Service
GCP PubSub
Integrates with Azure functions
Demo Autoscaling Storage
Queue consumer with ACI
5000
messages
apiVersion: keda.k8s.io/v1alpha1
kind: ScaledObject
metadata:
name: hello-keda
namespace: default
labels:
deploymentName: hello-keda
spec:
scaleTargetRef:
deploymentName: hello-keda
pollingInterval: 5 # Optional. Default: 30 seconds
maxReplicaCount: 15 # Optional. Default: 100
triggers:
- type: azure-queue
metadata:
name: myQueueItem
type: queueTrigger
direction: in
queueName: js-queue-items
connection: AzureWebJobsStorage
Demo Autoscaling RabbitMQ
https://github.com/NileshGule/AKS-learning-series
1000
messages
Batch of 10
messages
apiVersion: keda.k8s.io/v1alpha1
kind: ScaledObject
metadata:
name: rabbitmq-consumer
namespace: default
labels:
deploymentName: rabbitmq-consumer
spec:
scaleTargetRef:
deploymentName: rabbitmq-consumer
pollingInterval: 5 # Optional. Default: 30 seconds
cooldownPeriod: 30 # Optional. Default: 300 seconds
minReplicaCount: 1 # Optional. Default: 0
maxReplicaCount: 30 # Optional. Default: 100
triggers:
- type: rabbitmq
metadata:
queueName: hello
host: 'amqp://user:PASSWORD@rabbitmq.default.svc.cluster.local:5672’
queueLength : '5'
AKS cluster-autoscalar
Virtual Node
Horizontal pod autoscale
virtual kubelet
KEDA
Azure Function with Queue
Thank you very much
Code with Passion and Strive for Excellence
https://github.com/NileshGule/AKS-learning-series
https://github.com/NileshGule/pd-tech-fest-2019
https://github.com/NileshGule/sample-dotnet-core-rabbitmq-keda
https://www.slideshare.net/nileshgule/presentations
https://speakerdeck.com/nileshgule/
Q&A

Scaling containers with keda