Stay organized with collections
Save and categorize content based on your preferences.
Learn how to enable idle instances for your services by configuring the minimum
instances setting.
By default, Knative serving
scales up to the number of instances
based on the number of incoming requests. However,
if your service requires reduced latency and you want to limit the number of
cold starts, you can change this default behavior by specifying a minimum number
of container instances to be kept running and ready to serve requests.
Instances kept running in this way do incur billing costs.
Revisions and minimum instances
Minimum instances are started only if the revision is addressable. A revision
is addressable if either of the following is true:
It receives a percentage of the traffic.
It was assigned a revision tag.
Setting and updating minimum instances
Any configuration change leads to the
creation of a new revision. Subsequent revisions will also automatically get
this configuration setting unless you make explicit updates to change it.
By default, container instances have min-instances turned off, with a setting
of 0. You can change this default using the using the Google Cloud console,
or the Google Cloud CLI when you deploy a new
service or update an existing service and
deploy a revision:
Console
Go to Knative serving in the Google Cloud console:
Click Create Service if you are configuring a
new service you are deploying to. If you are configuring an
existing service, click on the service, then click
Edit & Deploy New Revision.
Under Advanced settings, click Container.
In the field labelled Minimum number of instances,
specify the desired number of container instances to be kept warm, ready to receive requests.
Click Next to continue to the next section.
In the Configure how this service is triggered section,
select which connectivity you would like to use to invoke the service.
Click Create to deploy the image to Knative serving and wait
for the deployment to finish.
Command line
For existing services, set the minimum number of container instances by
running the gcloud run services update command with the
--min-instances
parameter:
MIN-VALUE with the desired number of container
instances to be kept warm, ready to receive requests. Specify
default to clear any minimum instance setting.
For new services, set the minimum number of container instances by running
the gcloud run deploy command with the
--min-instances
parameter:
IMAGE_URL with a reference to the container image, for
example, gcr.io/myproject/my-image:latest.
MIN-VALUE with the desired number of
container instances to be kept warm, ready to receive requests. Specify
default to clear any minimum instance setting.
YAML
You can download the configuration of an existing service into a
YAML file with the gcloud run services describe command by using the
--format=export flag.
You can then modify that YAML file and deploy
those changes with the gcloud beta run services replace command.
You must ensure that you modify only the specified attributes.
Download the configuration of your service into a file named
service.yaml on local workspace:
MIN-VALUEcode> with the desired number of
container instances to be kept warm, ready to receive requests. Specify
default to clear any minimum instance setting.
Replace the service with its new configuration using the following command:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[[["\u003cp\u003eKnative Serving allows you to configure a minimum number of container instances to remain active and ready to serve requests, reducing latency and cold starts.\u003c/p\u003e\n"],["\u003cp\u003eSetting a minimum number of instances will incur billing costs as these instances are continuously running.\u003c/p\u003e\n"],["\u003cp\u003eMinimum instances are only started if the revision is addressable, meaning it either receives a portion of traffic or has been assigned a revision tag.\u003c/p\u003e\n"],["\u003cp\u003eYou can set or update the minimum number of instances through the Google Cloud console, the \u003ccode\u003egcloud\u003c/code\u003e command-line tool, or by modifying a service's YAML configuration file.\u003c/p\u003e\n"],["\u003cp\u003eUsing YAML files to modify service configuration will overwrite all existing configuration, so it is recommended to avoid using it in conjunction with the console or \u003ccode\u003egcloud\u003c/code\u003e commands.\u003c/p\u003e\n"]]],[],null,["# Using minimum instances\n\nLearn how to enable idle instances for your services by configuring the minimum\ninstances setting.\n\nBy default, Knative serving\n[scales](/anthos/run/archive/docs/instance-autoscaling) up to the number of instances\nbased on the number of incoming requests. However,\nif your service requires reduced latency and you want to limit the number of\ncold starts, you can change this default behavior by specifying a minimum number\nof container instances to be kept running and ready to serve requests.\n\nInstances kept running in this way do incur [billing costs](/anthos/run/archive/pricing).\n\nRevisions and minimum instances\n-------------------------------\n\nMinimum instances are started only if the revision is *addressable*. A revision\nis addressable if either of the following is true:\n\n- It receives a percentage of the traffic.\n- It was assigned a revision tag.\n\nSetting and updating minimum instances\n--------------------------------------\n\nAny configuration change leads to the\ncreation of a new revision. Subsequent revisions will also automatically get\nthis configuration setting unless you make explicit updates to change it.\n\nBy default, container instances have `min-instances` turned off, with a setting\nof `0`. You can change this default using the using the Google Cloud console,\nor the Google Cloud CLI when you deploy a new\n[service](/anthos/run/archive/docs/deploying#service) or update an existing service and\ndeploy a [revision](/anthos/run/archive/docs/deploying#revision): \n\n### Console\n\n\n1. Go to Knative serving in the Google Cloud console:\n\n [Go to Knative serving](https://console.cloud.google.com/kubernetes/run)\n2. Click **Create Service** if you are configuring a\n new service you are deploying to. If you are configuring an\n existing service, click on the service, then click\n **Edit \\& Deploy New Revision**.\n\n3. Under *Advanced settings* , click **Container**.\n\n4. In the field labelled *Minimum number of instances*,\n specify the desired number of container instances to be kept warm, ready to receive requests.\n\n5. Click **Next** to continue to the next section.\n\n6. In the **Configure how this service is triggered** section,\n select which connectivity you would like to use to invoke the service.\n\n7. Click **Create** to deploy the image to Knative serving and wait\n for the deployment to finish.\n\n### Command line\n\n- For existing services, set the minimum number of container instances by\n running the `gcloud run services update` command with the\n [`--min-instances`](/sdk/gcloud/reference/run/services/update#--min-instances)\n parameter:\n\n ```bash\n gcloud run services update SERVICE --min-instances MIN-VALUE\n ```\n\n Replace:\n - \u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e with the name of your service.\n - \u003cvar translate=\"no\"\u003eMIN-VALUE\u003c/var\u003e with the desired number of container instances to be kept warm, ready to receive requests. Specify `default` to clear any minimum instance setting.\n- For new services, set the minimum number of container instances by running\n the `gcloud run deploy` command with the\n [`--min-instances`](/sdk/gcloud/reference/run/deploy#--min-instances)\n parameter:\n\n ```bash\n gcloud run deploy SERVICE --image=IMAGE_URL --min-instances MIN-VALUE\n ```\n\n Replace:\n - \u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e with the name of your service.\n - \u003cvar translate=\"no\"\u003eIMAGE_URL\u003c/var\u003e with a reference to the container image, for example, `gcr.io/myproject/my-image:latest`.\n - \u003cvar translate=\"no\"\u003eMIN-VALUE\u003c/var\u003e with the desired number of container instances to be kept warm, ready to receive requests. Specify `default` to clear any minimum instance setting.\n\n### YAML\n\n| **Caution:** Deploying configuration changes using YAML files replaces the configuration of your existing services. Since a YAML file completely overwrites all configurations, you should avoid using multiple methods to modify your services. For example, do not use YAML files in conjunction with the Google Cloud console or `gcloud` commands.\n\nYou can download the configuration of an existing service into a\nYAML file with the `gcloud run services describe` command by using the\n[`--format=export`](/sdk/gcloud/reference/run/services/describe) flag.\nYou can then modify that YAML file and deploy\nthose changes with the `gcloud beta run services replace` command.\nYou must ensure that you modify only the specified attributes.\n\n1. Download the configuration of your service into a file named\n `service.yaml` on local workspace:\n\n ```bash\n gcloud run services describe SERVICE --format export \u003e service.yaml\n ```\n\n Replace \u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e with the name of your\n Knative serving service.\n2. In your local file, update the `autoscaling.knative.dev/minScale:`\n attribute:\n\n ```yaml\n spec:\n template:\n metadata:\n annotations:\n autoscaling.knative.dev/minScale: '\u003cvar translate=\"no\"\u003eMIN-INSTANCE\u003c/var\u003e' \n ```\n\n Replace:\n - \u003cvar translate=\"no\"\u003eMIN-VALUE\u003c/var\u003ecode\\\u003e with the desired number of container instances to be kept warm, ready to receive requests. Specify `default` to clear any minimum instance setting.\n3. Replace the service with its new configuration using the following command:\n\n ```bash\n gcloud beta run services replace service.yaml\n ```"]]