mirror of https://github.com/knative/docs.git
94 lines
3.4 KiB
Markdown
94 lines
3.4 KiB
Markdown
# Autoscaling
|
|
|
|
Knative Serving provides automatic scaling, also known as **autoscaling**. This means that a Knative Service by default scales down to zero running pods when it is not in use.
|
|
|
|
## List your Knative Service
|
|
|
|
Use the Knative (`kn`) CLI to view the URL where your Knative Service is hosted:
|
|
|
|
=== "kn"
|
|
View a list of Knative Services by running the command:
|
|
```bash
|
|
kn service list
|
|
```
|
|
!!! Success "Expected output"
|
|
```bash
|
|
NAME URL LATEST AGE CONDITIONS READY
|
|
hello http://hello.default.${LOADBALANCER_IP}.sslip.io hello-00001 13s 3 OK / 3 True
|
|
```
|
|
=== "kubectl"
|
|
View a list of Knative Services by running the command:
|
|
```bash
|
|
kubectl get ksvc
|
|
```
|
|
!!! Success "Expected output"
|
|
```bash
|
|
NAME URL LATESTCREATED LATESTREADY READY REASON
|
|
hello http://hello.default.${LOADBALANCER_IP}.sslip.io hello-00001 hello-00001 True
|
|
```
|
|
|
|
## Access your Knative Service
|
|
|
|
Access your Knative Service by opening the previous URL in your browser or by running the command:
|
|
|
|
```bash
|
|
echo "Accessing URL $(kn service describe hello -o url)"
|
|
curl "$(kn service describe hello -o url)"
|
|
```
|
|
|
|
!!! Success "Expected output"
|
|
```{ .bash .no-copy }
|
|
Hello World!
|
|
```
|
|
|
|
??? question "Are you seeing `curl: (6) Could not resolve host: hello.default.${LOADBALANCER_IP}.sslip.io`?"
|
|
|
|
In some cases your DNS server may be set up not to resolve `*.sslip.io` addresses. If you encounter this problem, it can be fixed by using a different nameserver to resolve these addresses.
|
|
|
|
The exact steps will differ according to your distribution. For example, with Ubuntu derived systems which use `systemd-resolved`, you can add the following entry to the `/etc/systemd/resolved.conf`:
|
|
|
|
```ini
|
|
[Resolve]
|
|
DNS=8.8.8.8
|
|
Domains=~sslip.io.
|
|
```
|
|
|
|
Then simply restart the service with `sudo service systemd-resolved restart`.
|
|
|
|
For MacOS users, you can add the DNS and domain using the network settings as explained [here](https://support.apple.com/en-gb/guide/mac-help/mh14127/mac).
|
|
|
|
## Observe autoscaling
|
|
|
|
Watch the pods and see how they scale to zero after traffic stops going to the URL:
|
|
|
|
```bash
|
|
kubectl get pod -l serving.knative.dev/service=hello -w
|
|
```
|
|
|
|
!!! note
|
|
It may take up to 2 minutes for your pods to scale down. Pinging your service again resets this timer.
|
|
|
|
!!! Success "Expected output"
|
|
```{ .bash .no-copy }
|
|
NAME READY STATUS
|
|
hello-world 2/2 Running
|
|
hello-world 2/2 Terminating
|
|
hello-world 1/2 Terminating
|
|
hello-world 0/2 Terminating
|
|
```
|
|
|
|
## Scale up your Knative Service
|
|
|
|
Rerun the Knative Service in your browser. You can see a new pod running again:
|
|
|
|
!!! Success "Expected output"
|
|
```{ .bash .no-copy }
|
|
NAME READY STATUS
|
|
hello-world 0/2 Pending
|
|
hello-world 0/2 ContainerCreating
|
|
hello-world 1/2 Running
|
|
hello-world 2/2 Running
|
|
```
|
|
|
|
Exit the `kubectl watch` command with `Ctrl+c`.
|