Kubernetes-based, scale-to-zero, request-driven compute
APACHE-2.0 License
Bot releases are hidden (Show)
Published by mattmoor almost 6 years ago
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.
We now use the Kubernetes /status
sub-resource support, which went Beta in K8s 1.11.
We will now scale Revisions down to zero pods after only 30 seconds of inactivity.
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.
You may now tune the default Knative autoscaler (KPA) with revision-level concurrency targets and different windows over which to calculate average concurrency.
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.
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.
We will now skip the Build step of a deployment if only the configuration of a Revision changes (e.g. env var).
Requests that show no activity within the allotted timeout will be cancelled and respond with a 503.
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.
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'.
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.
We have deprecated the Knative copy of the Istio ingress gateway.
Routes can be exposed to additional 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.
ClusterIngress class annotation is taken into account when reconciling. The default ClusterIngress reconciler only reconcile when the type is Istio.
https://github.com/knative/serving/issues/2359 (@lichuqiang) Conflict between Routes having the same names causing issue.
https://github.com/knative/serving/issues/2582 (@markusthoemmes) Correct Revision Timeout meaning.
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
Commit id of the running build is added to the logs generated by Knative components
Published by mattmoor almost 6 years ago
See: https://github.com/knative/serving/projects/6
We have made significant progress “under the hood” encapsulating the major subsystems of knative/serving
in an effort to support pluggability (e.g. replace Istio). Our core resources now configure these subsystems: Networking, Autoscaling, and Caching via new internal APIs.
We have spent considerable effort working to ensure that all knative components are usable in isolation, and splitting out our release artifacts into the smallest units we can. For instance, you can now install and use knative/serving
without knative/build
, and even plug in alternative Build
CRDs!
Our release now consists of:
serving.yaml
: just the knative/serving
components.build.yaml
: just knative/build
’s 0.2.0 releasemonitoring*.yaml
: a number of different configurations of our monitoring stack.istio*.yaml
: two configurations of our Istio stack, one with sidecar injection and one without.release*.yaml
: similar bundles to last releaseWe have replaced the previous per-Revision
autoscalers with a single shared autoscaler. This autoscaler is based on the same logic as the previous autoscaler, but has evolved to be purely metrics driven (including 0->1->0
), eliminating the unnecessary Revision
servingState
field.
We have replaced ConcurrencyModel
(Single
or Multi
) with an integer ContainerConcurrency
field. This allows limiting concurrency to values other than 1 for certain use cases (e.g. limited thread pools).
Example:
spec:
containerConcurrency: 1
container:
image: docker.io/{username}/helloworld-go
ContainerConcurrency
is now used to determine the autoscaler target concurrency.
Build
is no longer required to run Serving, unless you plan to use it. The old style of expressing builds inline is still supported when Build
is installed, but deprecated in favor of:
spec:
build:
apiVersion: build.knative.dev/v1alpha1
kind: Build
spec:
# What was previously directly under "build:"
In addition, alternative Build implementations may be plugged in, the only requirement is that those Build
resources indicate completion via:
status:
conditions:
- type: Succeeded
status: True | False | Unknown
A Configuration
will now reclaim unroutable Revisions
based on a few criteria:
serving.knative.dev/lastPinned
annotation heartbeat)N
)Configuration
?config/config-gc.yaml
.caching.internal.knative.dev/Image
resources to signal the images that are important to cache. Operators must install an extension to leverage these hints.Route
no longer depends directly on VirtualService
, but an intermediate resource ClusterIngress
which could be reconciled differently for different network platforms.
route.ns.svc.cluster.local
name) no longer requires the istio sidecar.The monitoring
namespace has changed to knative-monitoring
Published by mattmoor almost 6 years ago
See: https://github.com/knative/serving/projects/6
We have made significant progress “under the hood” encapsulating the major subsystems of knative/serving
in an effort to support pluggability (e.g. replace Istio). Our core resources now configure these subsystems: Networking, Autoscaling, and Caching via new internal APIs.
We have spent considerable effort working to ensure that all knative components are usable in isolation, and splitting out our release artifacts into the smallest units we can. For instance, you can now install and use knative/serving
without knative/build
, and even plug in alternative Build
CRDs!
Our release now consists of:
serving.yaml
: just the knative/serving
components.build.yaml
: just knative/build
’s 0.2.0 releasemonitoring*.yaml
: a number of different configurations of our monitoring stack.istio*.yaml
: two configurations of our Istio stack, one with sidecar injection and one without.release*.yaml
: similar bundles to last releaseWe have replaced the previous per-Revision
autoscalers with a single shared autoscaler. This autoscaler is based on the same logic as the previous autoscaler, but has evolved to be purely metrics driven (including 0->1->0
), eliminating the unnecessary Revision
servingState
field.
We have replaced ConcurrencyModel
(Single
or Multi
) with an integer ContainerConcurrency
field. This allows limiting concurrency to values other than 1 for certain use cases (e.g. limited thread pools).
Example:
spec:
containerConcurrency: 1
container:
image: docker.io/{username}/helloworld-go
ContainerConcurrency
is now used to determine the autoscaler target concurrency.
Build
is no longer required to run Serving, unless you plan to use it. The old style of expressing builds inline is still supported when Build
is installed, but deprecated in favor of:
spec:
build:
apiVersion: build.knative.dev/v1alpha1
kind: Build
spec:
# What was previously directly under "build:"
In addition, alternative Build implementations may be plugged in, the only requirement is that those Build
resources indicate completion via:
status:
conditions:
- type: Succeeded
status: True | False | Unknown
A Configuration
will now reclaim unroutable Revisions
based on a few criteria:
serving.knative.dev/lastPinned
annotation heartbeat)N
)Configuration
?config/config-gc.yaml
.caching.internal.knative.dev/Image
resources to signal the images that are important to cache. Operators must install an extension to leverage these hints.Route
no longer depends directly on VirtualService
, but an intermediate resource ClusterIngress
which could be reconciled differently for different network platforms.
route.ns.svc.cluster.local
name) no longer requires the istio sidecar.The monitoring
namespace has changed to knative-monitoring
Published by mattmoor almost 6 years ago
We have made significant progress “under the hood” encapsulating the major subsystems of knative/serving
in an effort to support pluggability (e.g. replace Istio). Our core resources now configure these subsystems: Networking, Autoscaling, and Caching via new internal APIs.
We have spent considerable effort working to ensure that all knative components are usable in isolation, and splitting out our release artifacts into the smallest units we can. For instance, you can now install and use knative/serving
without knative/build
, and even plug in alternative Build
CRDs!
Our release now consists of:
serving.yaml
: just the knative/serving
components.build.yaml
: just knative/build
’s 0.2.0 releasemonitoring*.yaml
: a number of different configurations of our monitoring stack.istio*.yaml
: two configurations of our Istio stack, one with sidecar injection and one without.release*.yaml
: similar bundles to last releaseWe have replaced the previous per-Revision
autoscalers with a single shared autoscaler. This autoscaler is based on the same logic as the previous autoscaler, but has evolved to be purely metrics driven (including 0->1->0
), eliminating the unnecessary Revision
servingState
field.
We have replaced ConcurrencyModel
(Single
or Multi
) with an integer ContainerConcurrency
field. This allows limiting concurrency to values other than 1 for certain use cases (e.g. limited thread pools).
Example:
spec:
containerConcurrency: 1
container:
image: docker.io/{username}/helloworld-go
ContainerConcurrency
is now used to determine the autoscaler target concurrency.
Build
is no longer required to run Serving, unless you plan to use it. The old style of expressing builds inline is still supported when Build
is installed, but deprecated in favor of:
spec:
build:
apiVersion: build.knative.dev/v1alpha1
kind: Build
spec:
# What was previously directly under "build:"
In addition, alternative Build implementations may be plugged in, the only requirement is that those Build
resources indicate completion via:
status:
conditions:
- type: Succeeded
status: True | False | Unknown
A Configuration
will now reclaim unroutable Revisions
based on a few criteria:
serving.knative.dev/lastPinned
annotation heartbeat)N
)Configuration
?config/config-gc.yaml
.caching.internal.knative.dev/Image
resources to signal the images that are important to cache. Operators must install an extension to leverage these hints.Route
no longer depends directly on VirtualService
, but an intermediate resource ClusterIngress
which could be reconciled differently for different network platforms.
route.ns.svc.cluster.local
name) no longer requires the istio sidecar.The monitoring
namespace has changed to knative-monitoring
Published by mattmoor about 6 years ago
Fixes:
Published by mattmoor over 6 years ago
First Knative Serving Alpha Release!