Autoscaling can be configured on pods to enable OpenShift to add or remove pods as load varies. In general, the Horizontal Pod Autoscaler sets:
- Upper limit of pods
- Lower limit of pods
- Metric threshold to use for scaling tasks
Currently CPU and memory metrics are supported, with additional arbitrary metrics support intended for the future.
This lab will provide a simple demonstration of autoscaling based on CPU, as this is configurable in the Web Console.
- First take some time to discover the configurable fields that belong to a HorizontalPodAutoscaler:
oc explain HorizontalPodAutoscaler - Create an autoscaler to automatically set the number of pods your app uses:
You are configuring a very low CPU request target (10%) so that you can test the autoscaling easily by browsing the web application. A real production CPU target would be closer to 70-80%.
oc -n [-dev] autoscale deployment/rocketchat-[username] --min 1 --max 10 --cpu-percent=10
-
Browse to the application to generate some load and monitor the behavior of the pods
-
Generate some activity such as creating messages, channels, etc.
-
We'll use a tool called ApacheBench to create some load for our application. You can check if you have
abinstalled by runningab version. If this returns an error, you can install usingsudo apt install apache2-utilswhich includes theabutility. -
Use the command below to benchmark your app using 10,000 requests generated by
ab(ApacheBench)# update the URL below and grab a new integration URL # Open RocketChat, go to Adminstration > Integrations > New Integration > Incoming WebHook # Set "Enabled" to "true" # Set "Post to Channel" to "#general" # Set "Post as" as "rocket.cat" # Click on "Save Changes" at the bottom # Copy "Webhook URL" (see "COPY TO CLIPBOARD" button/link) # Make sure the domain matches the exposed route (no "localhost:3000")!!! # Paste the command below into your terminal, replace the URL at the end with the URL from your clipboard, and run it to begin the load test: printf '{"text":"Example message","attachments":[{"title":"Rocket.Chat","title_link":"https://rocket.chat","text":"Rocket.Chat, the best open source chat","image_url":"https://rocket.chat/images/mockup.png","color":"#764FA5"}]}' > /tmp/rocketchat-post-msg.json && ab -p /tmp/rocketchat-post-msg.json -n 10000 -c 10 -T "application/json" http://rocketchat-[username]-[namespace].apps.silver.devops.gov.bc.ca/hooks/[integration]/[token] -
Review the deployment and try to add or remove replicas by editing its
.spec.replicasYAML value -
Observe how the autoscaler reacts to your new replica count and changes it
-
Remove the autoscaler
oc -n [-dev] delete hpa/rocketchat-[username]
Next page - Persistent Storage

