Latest in branch 0.21
0.21.4
Released 17 Jul 2015
(10 years ago)
SoftwareKubernetes
Version0.21
Status
End of life
Initial release0.21.0
07 Jul 2015
(10 years ago)
Latest release0.21.4
17 Jul 2015
(10 years ago)
End of supportUnavailable
End of security fixesUnavailable
Release noteshttps://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-0.21.md
Source codehttps://github.com/kubernetes/kubernetes/tree/v0.21.4
Documentationhttps://v0-21.docs.kubernetes.io/
Kubernetes 0.21 ReleasesView full list

What Is New in Kubernetes 0.21

Kubernetes 0.21 delivers critical enhancements across its core subsystems, focusing on API maturity, scheduling, and storage. This release introduces significant alpha features that lay the groundwork for future production capabilities.

Category Key Changes
New Features (Alpha) Ingress API, Horizontal Pod Autoscaling, Container Checkpointing, Termination Grace Periods
API & Core API Group Support, Experimental API Version Removal, API Server Changes
Scheduling Predicate/Priority Policy Config, Node Affinity, SelectorSpread Priority
Storage iSCSI CHAP Support, GCE PD Volume Name Changes
Bug Fixes kubectl Port-Forward, Node Controller, Resource Handling

What are the major API changes in Kubernetes 0.21?

The API machinery saw foundational shifts in version 0.21. The most notable change is the introduction of API groups, which restructures the API into logical domains instead of a single monolithic API. This is a crucial step for long-term API maintainability and extensibility.

Experimental API versions (v1beta1, v1beta2, v1beta3) were completely removed in this release. If you were using these, you must migrate to the stable v1 version before upgrading. The API server also gained a new --storage-versions flag, giving operators more control over how objects are persisted in etcd.

How did scheduling improve in this release?

Scheduler customization took a big leap forward. You can now define custom scheduling policies through a JSON config file specified by the --policy-config-file flag. This allows you to write your own predicates and priorities to control pod placement, moving beyond the hardcoded defaults.

The NodeAffinity predicate was added to support more sophisticated node selection rules. The SelectorSpread priority function was also improved to better distribute pods across zones and nodes, which is great for achieving high availability.

What new alpha features should I test?

Several alpha features landed that are worth experimenting with in development environments. The Ingress API (extensions/v1beta1) provides a standardized way to manage external access to HTTP/HTTPS services, abstracting away the details of the underlying cloud provider's load balancer.

Horizontal Pod Autoscering (HPA) based on CPU utilization is now available. The container checkpointing feature allows you to save a running container's state to disk, which is useful for debugging. Termination grace periods give pods a configurable window to shut down gracefully before being forcibly killed.

Were there any important storage updates?

Yes, iSCSI volume support was enhanced with CHAP authentication (chapAuthDiscovery and chapAuthSession), making it more secure for production use. This matters because it allows Kubernetes to integrate with enterprise-grade storage arrays that require authentication.

A subtle but important change affected GCE Persistent Disk volumes. The source of the volume name changed from the disk's URL to just the disk name. While this should be handled automatically, it's something to be aware of if you have automation that parses these names.

Which critical bugs were squashed?

A race condition in kubectl port-forward was fixed, resolving issues where the command would sometimes fail or hang. The node controller was made more robust in how it handles node status updates, preventing certain failure scenarios.

Several resource handling bugs were addressed, making the system more stable under load. These fixes improve the day-to-day reliability of core operations, especially in larger clusters.

FAQ

I use the experimental API versions. Will my cluster break if I upgrade to 0.21?
Yes, it will break. The v1beta1, v1beta2, and v1beta3 API versions were completely removed. You must migrate all your manifests and API calls to the stable v1 version before performing the upgrade.

What exactly is the new Ingress API and why would I use it?
The Ingress API (extensions/v1beta1) provides a standardized way to define rules for routing external HTTP/HTTPS traffic to your services. Instead of managing cloud-specific load balancer configurations, you define a universal Ingress resource, and Kubernetes handles the implementation details for your cloud provider.

How does the new Horizontal Pod Autoscaling work?
This alpha feature allows you to automatically scale the number of pods in a replication controller based on observed CPU utilization. You define a target CPU utilization percentage, and the HPA controller adjusts the replica count to meet that target. It's a basic but powerful first step towards automated scaling.

Is the custom scheduler policy feature stable?
No, it's an alpha feature. While it enables powerful customization of the scheduling process through a JSON config file, the API and behavior are subject to change in future releases. Use it for experimentation but avoid relying on it for critical production workloads at this stage.

What was the issue with kubectl port-forward?
There was a race condition that could cause the port-forwarding command to fail or hang indefinitely, especially when dealing with multiple concurrent connections. The fix made the command much more reliable for everyday debugging and troubleshooting tasks.

Releases In Branch 0.21

VersionRelease date
0.21.417 Jul 2015
(10 years ago)
0.21.316 Jul 2015
(10 years ago)
0.21.211 Jul 2015
(10 years ago)
0.21.109 Jul 2015
(10 years ago)
0.21.007 Jul 2015
(10 years ago)