Knative Serving release v0.3.0
Pre-releaseMeta
More regular releases
0.3 is the first release of our new schedule of releasing every 6 weeks.
This release is a smaller delta than 0.2 because of this shorter development cycle.
Kubernetes 1.11 is now required
We now use the Kubernetes /status
sub-resource support, which went Beta in K8s 1.11.
Autoscaling
More aggressive scale to zero
We will now scale Revisions down to zero pods after only 30 seconds of inactivity.
Support for HPA-class autoscaler (Kubecon Demo)
You may now opt to use the Kubernetes HPA for autoscaling Revisions, if you want to scale on CPU instead of request rate. HPA-class Revisions will not scale to zero.
Support target and window annotations for KPA-class autoscaler
You may now tune the default Knative autoscaler (KPA) with revision-level concurrency targets and different windows over which to calculate average concurrency.
Support mutable PodAutoscalers
You may now mutate PodAutoscaler specs in-place to adjust the scale bounds and other parameters. The changes will be picked up dynamically by KPA and HPA-class autoscalers.
Core API
Support of “resources” block (thanks @jszroberto)
You may now specify the resources section of a container spec to include reservations and limits on the resources your service may use. This also lets your Service gain access to GPUs, if available on your cluster.
Elide Builds for config-only changes
We will now skip the Build step of a deployment if only the configuration of a Revision changes (e.g. env var).
Revisions can now specify TimeoutSeconds
Requests that show no activity within the allotted timeout will be cancelled and respond with a 503.
Inactive isn’t failed!
Fixed an issue in 0.2 where Services, Configurations, and Revisions that were scaled to zero would appear to have failed. The “Active” condition is now treated as a purely informational condition.
A Container Port can now be specified for incoming traffic
You may now specify a single 'containerPort' to customize which port will receive request traffic. If unspecified, the default port (8080) will be assumed. As with previous releases, this value is available to the container through the environment variable '$PORT'.
More Global Resyncs
Editing the Serving ConfigMaps will now immediately trigger all existing resources to reconcile, and reflect any newly configured settings. This avoids the (up to 10 hour) delay that would otherwise exist waiting for the normal resync.
Networking
Use the default gateway istio-ingressgateway by default (@lichuqiang)
We have deprecated the Knative copy of the Istio ingress gateway.
Routes can be exposed to additional Gateways.
Routes without external domain are exposed only to local Gateways
Route that only have svc.cluster.local
domain suffix will not be exposed to Istio ingress gateway by default.
Users can set the label
serving.knative.dev/visibility=cluster-local
on a Route or Service to achieve the same effect.
Reconcile ClusterIngress' based on Ingress class annotation (@greghaynes)
ClusterIngress class annotation is taken into account when reconciling. The default ClusterIngress reconciler only reconcile when the type is Istio.
Bug fixes:
#2359 (@lichuqiang) Conflict between Routes having the same names causing issue.
#2582 (@markusthoemmes) Correct Revision Timeout meaning.
Monitoring
Metrics improvements
New metrics are added for Knative reconciler
Metric labels were renamed to be consistent across all Knative components
Knative control plane (reconciler, autoscaler & activator) metrics can now be exported to Stackdriver backend
Logging improvements
Commit id of the running build is added to the logs generated by Knative components