mirror of https://github.com/knative/docs.git
Updated autoscale go README. (#912)
This commit is contained in:
parent
87a9af8b76
commit
f47f247e82
|
@ -13,7 +13,7 @@ A demonstration of the autoscaling capabilities of a Knative Serving Revision.
|
||||||
1. The `hey` load generator installed (`go get -u github.com/rakyll/hey`).
|
1. The `hey` load generator installed (`go get -u github.com/rakyll/hey`).
|
||||||
1. Clone this repository, and move into the sample directory:
|
1. Clone this repository, and move into the sample directory:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
git clone https://github.com/knative/docs knative-docs
|
git clone https://github.com/knative/docs knative-docs
|
||||||
cd knative-docs
|
cd knative-docs
|
||||||
```
|
```
|
||||||
|
@ -28,7 +28,7 @@ A demonstration of the autoscaling capabilities of a Knative Serving Revision.
|
||||||
|
|
||||||
1. Find the ingress hostname and IP and export as an environment variable:
|
1. Find the ingress hostname and IP and export as an environment variable:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
# In Knative 0.2.x and prior versions, the `knative-ingressgateway` service was used instead of `istio-ingressgateway`.
|
# In Knative 0.2.x and prior versions, the `knative-ingressgateway` service was used instead of `istio-ingressgateway`.
|
||||||
INGRESSGATEWAY=knative-ingressgateway
|
INGRESSGATEWAY=knative-ingressgateway
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ A demonstration of the autoscaling capabilities of a Knative Serving Revision.
|
||||||
|
|
||||||
1. Make a request to the autoscale app to see it consume some resources.
|
1. Make a request to the autoscale app to see it consume some resources.
|
||||||
|
|
||||||
```
|
```shell
|
||||||
curl --header "Host: autoscale-go.default.example.com" "http://${IP_ADDRESS?}?sleep=100&prime=10000&bloat=5"
|
curl --header "Host: autoscale-go.default.example.com" "http://${IP_ADDRESS?}?sleep=100&prime=10000&bloat=5"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ A demonstration of the autoscaling capabilities of a Knative Serving Revision.
|
||||||
|
|
||||||
1. Send 30 seconds of traffic maintaining 50 in-flight requests.
|
1. Send 30 seconds of traffic maintaining 50 in-flight requests.
|
||||||
|
|
||||||
```
|
```shell
|
||||||
hey -z 30s -c 50 \
|
hey -z 30s -c 50 \
|
||||||
-host "autoscale-go.default.example.com" \
|
-host "autoscale-go.default.example.com" \
|
||||||
"http://${IP_ADDRESS?}?sleep=100&prime=10000&bloat=5" \
|
"http://${IP_ADDRESS?}?sleep=100&prime=10000&bloat=5" \
|
||||||
|
@ -124,8 +124,8 @@ A demonstration of the autoscaling capabilities of a Knative Serving Revision.
|
||||||
|
|
||||||
Knative Serving autoscaling is based on the average number of in-flight requests
|
Knative Serving autoscaling is based on the average number of in-flight requests
|
||||||
per pod (concurrency). The system has a default
|
per pod (concurrency). The system has a default
|
||||||
[target concurrency of 100.0](https://github.com/knative/serving/blob/3f00c39e289ed4bfb84019131651c2e4ea660ab5/config/config-autoscaler.yaml#L35)
|
[target concurrency of 100](https://github.com/knative/serving/blob/3f00c39e289ed4bfb84019131651c2e4ea660ab5/config/config-autoscaler.yaml#L35-L41)
|
||||||
but [we used 10](service.yaml#L26) for our service. We loaded the service with
|
but [we used 10](service.yaml#L25-L26) for our service. We loaded the service with
|
||||||
50 concurrent requests so the autoscaler created 5 pods
|
50 concurrent requests so the autoscaler created 5 pods
|
||||||
(`50 concurrent requests / target of 10 = 5 pods`)
|
(`50 concurrent requests / target of 10 = 5 pods`)
|
||||||
|
|
||||||
|
@ -133,11 +133,11 @@ but [we used 10](service.yaml#L26) for our service. We loaded the service with
|
||||||
|
|
||||||
The autoscaler calculates average concurrency over a 60 second window so it
|
The autoscaler calculates average concurrency over a 60 second window so it
|
||||||
takes a minute for the system to stablize at the desired level of concurrency.
|
takes a minute for the system to stablize at the desired level of concurrency.
|
||||||
However the autoscaler also calculates a 6 second "panic" window and will enter
|
However the autoscaler also calculates a 6 second `panic` window and will enter
|
||||||
panic mode if that window reached 2x the target concurrency. In panic mode the
|
panic mode if that window reached 2x the target concurrency. In panic mode the
|
||||||
autoscaler operates on the shorter, more sensitive panic window. Once the panic
|
autoscaler operates on the shorter, more sensitive panic window. Once the panic
|
||||||
conditions are no longer met for 60 seconds, the autoscaler will return to the
|
conditions are no longer met for 60 seconds, the autoscaler will return to the
|
||||||
initial 60 second "stable" window.
|
initial 60 second `stable` window.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
|
||||||
|
@ -166,7 +166,7 @@ autoscaler classes built into Knative:
|
||||||
|
|
||||||
Example of a Service scaled on CPU:
|
Example of a Service scaled on CPU:
|
||||||
|
|
||||||
```
|
```yaml
|
||||||
apiVersion: serving.knative.dev/v1alpha1
|
apiVersion: serving.knative.dev/v1alpha1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
|
@ -189,7 +189,7 @@ spec:
|
||||||
Additionally the autoscaler targets and scaling bounds can be specified in
|
Additionally the autoscaler targets and scaling bounds can be specified in
|
||||||
annotations. Example of a Service with custom targets and scale bounds:
|
annotations. Example of a Service with custom targets and scale bounds:
|
||||||
|
|
||||||
```
|
```yaml
|
||||||
apiVersion: serving.knative.dev/v1alpha1
|
apiVersion: serving.knative.dev/v1alpha1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
|
@ -240,7 +240,7 @@ kubectl port-forward --namespace knative-monitoring $(kubectl get pods --namespa
|
||||||
|
|
||||||
1. Send 60 seconds of traffic maintaining 100 concurrent requests.
|
1. Send 60 seconds of traffic maintaining 100 concurrent requests.
|
||||||
|
|
||||||
```
|
```shell
|
||||||
hey -z 60s -c 100 \
|
hey -z 60s -c 100 \
|
||||||
-host "autoscale-go.default.example.com" \
|
-host "autoscale-go.default.example.com" \
|
||||||
"http://${IP_ADDRESS?}?sleep=100&prime=10000&bloat=5"
|
"http://${IP_ADDRESS?}?sleep=100&prime=10000&bloat=5"
|
||||||
|
@ -248,7 +248,7 @@ kubectl port-forward --namespace knative-monitoring $(kubectl get pods --namespa
|
||||||
|
|
||||||
1. Send 60 seconds of traffic maintaining 100 qps with short requests (10 ms).
|
1. Send 60 seconds of traffic maintaining 100 qps with short requests (10 ms).
|
||||||
|
|
||||||
```
|
```shell
|
||||||
hey -z 60s -q 100 \
|
hey -z 60s -q 100 \
|
||||||
-host "autoscale-go.default.example.com" \
|
-host "autoscale-go.default.example.com" \
|
||||||
"http://${IP_ADDRESS?}?sleep=10"
|
"http://${IP_ADDRESS?}?sleep=10"
|
||||||
|
@ -256,7 +256,7 @@ kubectl port-forward --namespace knative-monitoring $(kubectl get pods --namespa
|
||||||
|
|
||||||
1. Send 60 seconds of traffic maintaining 100 qps with long requests (1 sec).
|
1. Send 60 seconds of traffic maintaining 100 qps with long requests (1 sec).
|
||||||
|
|
||||||
```
|
```shell
|
||||||
hey -z 60s -q 100 \
|
hey -z 60s -q 100 \
|
||||||
-host "autoscale-go.default.example.com" \
|
-host "autoscale-go.default.example.com" \
|
||||||
"http://${IP_ADDRESS?}?sleep=1000"
|
"http://${IP_ADDRESS?}?sleep=1000"
|
||||||
|
@ -265,7 +265,7 @@ kubectl port-forward --namespace knative-monitoring $(kubectl get pods --namespa
|
||||||
1. Send 60 seconds of traffic with heavy CPU usage (~1 cpu/sec/request, total
|
1. Send 60 seconds of traffic with heavy CPU usage (~1 cpu/sec/request, total
|
||||||
100 cpus).
|
100 cpus).
|
||||||
|
|
||||||
```
|
```shell
|
||||||
hey -z 60s -q 100 \
|
hey -z 60s -q 100 \
|
||||||
-host "autoscale-go.default.example.com" \
|
-host "autoscale-go.default.example.com" \
|
||||||
"http://${IP_ADDRESS?}?prime=40000000"
|
"http://${IP_ADDRESS?}?prime=40000000"
|
||||||
|
@ -273,7 +273,7 @@ kubectl port-forward --namespace knative-monitoring $(kubectl get pods --namespa
|
||||||
|
|
||||||
1. Send 60 seconds of traffic with heavy memory usage (1 gb/request, total 5
|
1. Send 60 seconds of traffic with heavy memory usage (1 gb/request, total 5
|
||||||
gb).
|
gb).
|
||||||
```
|
```shell
|
||||||
hey -z 60s -c 5 \
|
hey -z 60s -c 5 \
|
||||||
-host "autoscale-go.default.example.com" \
|
-host "autoscale-go.default.example.com" \
|
||||||
"http://${IP_ADDRESS?}?bloat=1000"
|
"http://${IP_ADDRESS?}?bloat=1000"
|
||||||
|
|
Loading…
Reference in New Issue