Meta
Minimum Kubernetes version supported is 1.16
- The previous release documented a minimum version of 1.16, where this release actually raises the hard limit as we have begun to take advantage of 1.16 features (namely CRD v1 API).
PodAutoscaler custom metrics API is dropped
- The autoscaler no longer implements the custom metrics API contract and we also no longer ship the APIService necessary to enable generic metric clients (like the HPA) to fetch those metrics from the autoscaler. Revisions can no longer be scaled using concurrency and/or request-per-second metrics when using the HPA.
- Multiple shoutouts via mailing lists and the community meeting yielded no usage of that feature.
We no longer release a serving.yaml manifest
- We stopped documenting this manifest some time ago, and it has long been the concatenation of several of the other manifests.
Post-Install Jobs
- The new
serving-post-install-jobs.yaml
is expected to be used withkubectl create
- the jobs are idempotent
Autoscaling
- Improved load-balancing behavior for revisions that have the activator in their networking path #8226 #8263 (thanks @vagababov)
- Dropped support for HPA-scaling based on concurrency/RPS metrics #8318 (thanks @markusthoemmes)
- Stop renewing panic mode if it’s not necessary** #8125 (thanks @vagababov)**
- Added validation of autoscaler classes under the “knative.dev” domain #8224 (thanks @yanweiguo)
- Optimized the protocol between the Activator and the Autoscaler #8266 (thanks @julz)
- Made autoscaler calculations consistent between CPU architectures #8341 (thanks @mundaym)
- Keep connections alive during scrapes, if possible #8367 (thanks @julz)
- Scale non-routable revisions down quicker #8389 (thanks @vagababov)
- Remove endpoints informer from autoscaler reducing reducing our API server load for watches, memory usage and GC (thanks @vagababov)
Core API
- Support for multiple-containers is now alpha (many PRs, thanks @savitaashture, @skonto)
- You can now use multiple-containers in the pod spec of a Knative Service when you set “multi-container” to “enabled” in our config-features ConfigMap.
- Support for disabling “service links” #8439, #8498, #8499 (thanks @dprotaso, @mattmoor, @vagababov)
- This let’s through a field of the pod spec that was added in K8s 1.13 to disable a feature of the Kubernetes runtime environment called “service links”. This early service discovery feature injects 8 environment variables into the Pod’s containers for each Kubernetes Service in the same namespace, which leads to serious problems when many services are deployed. We have started to socialize a change to the default runtime behavior here, which would take effect in 0.19: #8563.
- Support for using the downwards API in environment variables #8126 (thanks @JRBANCEL)
- This let’s users start to use fieldRef in their environment variable spec to project information like namespace into their containers.
- This feature must be explicitly enabled by setting “kubernetes.podspec-fieldref” to “enabled” in our config-features ConfigMap.
- We have extended our leader election support to apply to Knative webhooks (many PRs, thanks @mattmoor, @yanweiguo)
- This is the first part of this feature track.
- Ongoing improvements to our generated controller infrastructure (many PRs, thanks @whaught)
- In reconcilers for “Knative-shaped” resources, the generated controller logic takes on a number of additional “best-practice” responsibilities (now by default!), including management of “observed generation”
- Reduce the idle queue-proxy CPU usage 10x #8148 (thanks @mattmoor)
- The default exec probe frequency on minScale revisions led to a high CPU usage by the queue proxy due to the frequency. We reduced the frequency from 1s to 10s to reduce this overhead by roughly 10x.
- Users are now warned if they change the “_example” block in ConfigMaps seemingly by accident #8123 (thanks @markusthoemmes)
- Ingress conformance tests have been moved out of test files so they can be consumed downstream #8150 (thanks @dprotaso)
- Operators can now set queue proxy resource requests/limits in the config-deployment.yaml config map #8195 (thanks @julz)
Networking
- Fix Unknown cert status issue when cluster-local visibility is set #8043 (thanks @nak3)
- Support tag header based routing (thanks @igsong, @tanzeeb, @tcnghia, @ZhiminXiang)
- Split networking related resources from knative/serving repo into knative/networking repo (thanks @tcnghia)
- Reduce the high CPU usage of idle queue-proxy #8147 #8149 (thanks @mattmoor, @vagababov)
- Increase the QPS limit of networking probing #8054 (thanks @JRBANCEL)
- Fix the issue that namespace-level auto TLS feature does not work with web browser because of HTTP connection reuse #7495 (thanks @ZhiminXiang)
- Drop istio-injection=enabled label in knative-serving namespace from serving-core.yaml. #8482 (thanks @nak3)
- Add a documentation about how to use Istio Authorization with Knative (thanks @nak3)