Release Timeline ◦ Start Date: 26th of April 2021 ▪ Enhancements Freeze: 13th of May 2021 23:59 PDT ▪ Code Freeze: 8th of July 2021 18:00 PDT ◦ Target Release Date: 4th of August 2021 ★ Kubernetes Release Cadence has changed to 3 releases per year ◦ Roughly one Minor release every 4 months ◦ Enhance determinism and reduce risk
after kube-apiserver reboot • Avoid tons of relists during kube-apiservers rolling upgrades • Avoid different instances of kube-apiserver stuck with watchcache synced to different resource versions for extended period of time Tracking Issue Enhancement Proposal Status: Stable Status: Beta
typed clients • Introduces a type-safe programmatic way to call server side apply from client-go • Client-go bundles a set of Apply configurations • Clears the path for server side apply to go GA Tracking Issue Enhancement Proposal Status: Beta
for all namespaces • Introduces a reserved label “kubernetes.io/metadata.name” which will be set to name of the namespace • Adds the ability to select namespaces by name reliably using traditional label selector methods. Tracking Issue Enhancement Proposal Status: Beta
Stable • CronJobs graduated to Beta in Kubernetes 1.21 • The old controllers and feature flags have been removed Tracking Issue Enhancement Proposal Status: Beta Status: Stable
Controller • Finished resources like `Jobs` and `Pods` can accumulate in a cluster over time if they are not cleaned periodically • Make it easy to for the users to specify a time-based clean up mechanism for them Tracking Issue Enhancement Proposal Status: Stable Status: Beta
on ReplicaSet Downscale • Implements a randomized algorithm to choose Pods to be killed on a ReplicaSet downscale event • Also keeps into consideration the existing heuristics Tracking Issue Enhancement Proposal Status: Beta Status: Alpha
Provides users with support to run massively parallel programs • The Pods running can talk to each other with the addition of a Headless Service Tracking Issue Enhancement Proposal Status: Beta Status: Alpha
Adds a `suspend` boolean field to Job specification • It allows to suspend and resume jobs • Useful for preserving existing Job metadata like successful or failed completions Tracking Issue Enhancement Proposal Status: Stable Status: Alpha
Cost • Influence the order of Pod deletion on downscale events • `controller.kubernetes.io/pod-deletion-cost` can be provided as an annotation • Pods with Lower pod deletion cost will be deleted first Tracking Issue Enhancement Proposal Status: Stable Status: Alpha
• Deprecation starts in 1.21 • Planned to be removed in 1.25 • Replacement being worked on Tracking Issue Enhancement Proposal Status: Deprecated Deprecation Blog
providers • Allow out-of-tree implementation credential providers in client-go • Ensure that credentials can be rotated without restarting clients • Eventually make client-go vendor neutral by deprecating `gcp` and `azure` authentication options Tracking Issue Enhancement Proposal Status: Stable Status: Beta
Tokens: separate RootCAConfigMap from BoundServiceAccountTokenVolume • Audience of issued JWTs would be bound • Auto-configured service account tokens in pods use projected tokens Tracking Issue Enhancement Proposal Status: Stable Status: Beta
Tokens: RootCAConfigMap to GA • Publishes a `kube-root-ca.crt` ConfigMap to every namespace • This ConfigMap contains a CA bundle used for verifying connections to the kube-apiserver Tracking Issue Enhancement Proposal Status: Stable
key retrieval • Allow authorized systems to discover the information they need to authenticate Kubernetes Service Account tokens • Eventual goal is to make the Kubernetes API Server OIDC compatible Tracking Issue Enhancement Proposal Status: Stable
metadata in http request headers Allows cluster admins to use this information for telemetry and debugging Tracking Issue Enhancement Proposal Status: Stable Status: Alpha
Controller Managers • Enables HA migration of in-tree to out-of-tree cloud providers • Defines a set of guidelines and processes Tracking Issue Enhancement Proposal Status: Stable Status: Alpha
• Deprecation lifecycle is in place to better handle deprecation of stable metrics • Deprecation notice in the description text (Deprecated from x.y) and a warning log Tracking Issue Enhancement Proposal Status: Stable
resource requests and limits that represent the pod model • The `kube-scheduler` exposes optional metrics that reports the requested resources and the desired limits of all running pods Tracking Issue Enhancement Proposal Status: Beta
secrets via static analysis • Static analysis to be used during testing to prevent various types of sensitive information from leaking via logs Tracking Issue Enhancement Proposal Status: Beta
• Turn off metrics to mitigate issue where metrics causes memory leaks • Turn off metrics using `--disabled-metrics` • Set allow-list of label value for metrics using `--allow-label-value` Status: Alpha Tracking Issue Enhancement Proposal
In the v1 API, `topology` field was removed in favor of the dedicated fields `nodeName` and `zone` • The Endpoints controller adds annotation to indicate over capacity for an Endpoints resource with more than 1000 endpoints Tracking Issue Enhancement Proposal Status: Stable
• Option to specify the class of a load balancer implementation for `LoadBalancer` type of Service • Introduces field `service.spec.loadBalancerClass` in Service Status: Alpha Tracking Issue Enhancement Proposal
• Option to enable `NetworkPolicyEndpoint` to target a range of ports instead of a single port when setting a network policy • Introduces field `endPort` in NetworkPolicy Status: Alpha Tracking Issue Enhancement Proposal
Policy • Introduce a new field `spec.internalTrafficPolicy` in Service that kube-proxy uses to filter the endpoint it routes • When set to `Cluster` or missing, all endpoints are considered • When set to `Local`, only node local endpoints are considered Status: Alpha Tracking Issue Enhancement Proposal
via admission • Allow users to disable the `externalIPs` feature of Services via `DenyServiceExternalIPs` admission control • Blocks deployment of any resource that uses `externalIPs` field Tracking Issue Enhancement Proposal Status: Stable
• Provide hints to Cluster components like kube-proxy to influence how traffic to is routed by keeping traffic within the zone it originated from • Activate feature by setting annotation `service.kubernetes.io/topology-a ware-hints` to `auto` Status: Alpha Tracking Issue Enhancement Proposal
• Support for Linux sysctl interface to tune OS parameters for deployed Pods • Beta since 1.11, now stable Tracking Issue Enhancement Proposal Status: Stable
for Containers in a Pod • Support `runAsGroup` field inside the `securityContext` field in a Pod • Beta since 1.14, now stable Tracking Issue Enhancement Proposal Status: Stable
New component in Kubelet ecosystem to guarantee memory allocation for pods in the Guaranteed QoS class • single-NUMA and multi-NUMA allocation strategies Status: Alpha Tracking Issue Enhancement Proposal
• `GracefulNodeShutdown` enabled by default • Kubelet detects node system shutdown and gracefully terminates pods running on the node Tracking Issue Enhancement Proposal Status: Beta
support for hugepages • Pods are able to fetch information on their hugepage requests and limits via the downward API • Supported if all workers in the cluster are min 1.20 version Tracking Issue Enhancement Proposal Status: Beta
period to probes • Introduce probe-level `terminationGracePeriodSeconds` • Override the pod-level `terminationGracePeriodSeconds` for liveness or startup termination, and will be ignored for readiness probes Status: Alpha Tracking Issue Enhancement Proposal
to report allocatable resources • Addition to Kubelet pod resources endpoint to allow third party consumers to learn about the compute resources allocated to a Pod • Introduces `GetAllocatableResources` endpoint Status: Alpha Tracking Issue Enhancement Proposal
during the new scheduling cycle • Define a preferred node to speed up scheduling • Introduce a new field `.status.nomindatedNodeName` in Pod Tracking Issue Enhancement Proposal Status: Alpha
pod affinity • Introduces `namespaceSelector` to allow setting namespaces dynamically for affinity term • Introduces `CrossNamespacePodAffinity` that limits which namespaces are allows to have pods with affinity terms that cross namespaces Tracking Issue Enhancement Proposal Status: Alpha
ConfigMaps • Protects against inadvertent updates to Secrets and ConfigMaps • Kubelet doesn’t poll for such Secrets and ConfigMaps resulting in performance improvements Tracking Issue Enhancement Proposal Status: Beta Status: Stable
for Pod Scheduling • Prevents Pod creation getting stuck due to unavailability of requested storage • Schedule pods to nodes where the requested storage capacity is available Tracking Issue Enhancement Proposal Status: Beta
Volumes • Extend Kubernetes with CSI drivers that provide light-weight, local volumes • New volume source, the so-called EphemeralVolumeSource contains all fields that are needed to create a volume claim • The Pod is the owner of the volume claim, if the pod gets deleted the garbage collector deletes also the volume Status: Alpha Tracking Issue Enhancement Proposal Status: Beta
on volume capacity • Optimize Volume resource usage • Schedules pods on nodes where the available capacity is close to requested capacity Status: Alpha Tracking Issue Enhancement Proposal
to CSI driver migration If you have the Azure File CSI Driver, you can turn on the feature gate CSIMigrationAzureFile to enable the same Status: Alpha Tracking Issue Enhancement Proposal Status: Beta
for CSI Driver • Allow CSI driver to request audience-bounded service account tokens of pods from kubelet to NodePublishVolume. • Provide an option to re-execute NodePublishVolume in a best-effort manner. Status: Alpha Tracking Issue Enhancement Proposal Status: Beta
Maintenance • The project used to maintain multiple build systems • CI processes using Bazel moved to `make build` • Bazel based build and related tooling are removed Tracking Issue Enhancement Proposal Status: Stable
Program ★ Release Team Roles ◦ Release Team Lead ◦ Enhancements ◦ CI Signal ◦ Bug Triage ◦ Docs ◦ Release Notes ◦ Communications ★ 1 lead : 3 - 5 shadows ★ ~4 months // weekly workload varies depending on team ★ Release Team Shadows Github repo