Latest in branch 0.9
0.9.3
Released 31 Jan 2015
(11 years ago)
SoftwareKubernetes
Version0.9
Status
End of life
Initial release0.9.0
21 Jan 2015
(11 years ago)
Latest release0.9.3
31 Jan 2015
(11 years ago)
End of supportUnavailable
End of security fixesUnavailable
Release noteshttps://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-0.9.md
Source codehttps://github.com/kubernetes/kubernetes/tree/v0.9.3
Documentationhttps://v0-9.docs.kubernetes.io/
Kubernetes 0.9 ReleasesView full list

What Is New in Kubernetes 0.9

Kubernetes 0.9 delivers foundational improvements in workload management, cluster operations, and networking. This release focuses on maturing the core API and providing more robust tools for running containerized applications at scale.

Category Key Changes
New Features Jobs API, Horizontal Pod Autoscaling, Ingress API
API Improvements Experimental API Groups, Resource Quota Scope
Networking kube-proxy Rewrite, Service IP Ranges
Node & Storage Node Controller Rewrite, Volume Plugins
Tooling kubectl Apply, Improved Logging

How did workload management evolve?

The introduction of the Jobs API is the headline feature for managing workloads. It finally provides a native way to run finite, batch-style computations that complete successfully, instead of hacking around with bare pods.

Horizontal Pod Autoscaling also landed, allowing ReplicationControllers to automatically scale the number of pods based on observed CPU utilization. This was a huge step towards building self-healing, responsive applications.

Ingress for External Access

The experimental Ingress API was added to manage external HTTP(S) access to services. It provides a way to define rules for routing traffic, a precursor to the modern Ingress controllers we use today.

What changed in the core API?

This release began the crucial shift towards API groups with the introduction of experimental API groups. This change laid the groundwork for the extensible API structure that Kubernetes is known for, separating the core API from future extensions.

Resource quotas became more powerful with the ability to scope them to specific resources. You could now set quotas that applied only to long-running services, for example, excluding batch jobs from the same limits.

Was networking improved?

Absolutely. kube-proxy was completely rewritten to use iptables instead of userspace proxying. This was a massive performance win, reducing latency and improving reliability for service-to-service communication.

The concept of specifying a service IP range (--service-cluster-ip-range) was formalized. This gave operators explicit control over the IP allocation for services, preventing conflicts and making network planning easier.

What about node stability and storage?

The node controller was rewritten to be more resilient and efficient. This improved how the system handled node failures and heartbeats, making the entire cluster more stable when individual nodes had issues.

On the storage front, support for additional volume plugins was added, expanding the options for persistent storage. The container volume interface was also updated, paving the way for the flexible PersistentVolume system.

Did the developer experience get any love?

Yes, the kubectl apply command was introduced, offering a declarative way to manage resources. This was a fundamental shift towards the GitOps-style workflows that are now standard practice.

Logging throughout the system was enhanced to be more structured and informative. This made debugging a running cluster significantly easier, which was a relief for everyone operating Kubernetes at the time.

FAQ

Why is the Jobs API such a big deal?
Before Jobs, running a batch process meant manually managing pods and cleaning them up. The Jobs API automated this, ensuring a task runs to completion and then cleaning up the pods, which is essential for data processing and CI/CD pipelines.

What's the real-world impact of the kube-proxy rewrite to iptables?
It made service networking faster and more reliable. The userspace proxy was a bottleneck; moving to iptables reduced latency and handled more connections, which directly improved application performance.

How does Horizontal Pod Autoscaling work in this early version?
It was basic but functional. It automatically adjusted the number of pods in a ReplicationController based on average CPU usage across all pods. You had to enable it as an addon and provide a heapster URL for metrics.

What are experimental API groups and why should I care?
They are a way to extend the Kubernetes API beyond its core. This design allowed new features to be developed and tested without cluttering the core API, which is why Kubernetes can innovate so quickly today.

Is the Ingress API in 0.9 the same as it is now?
No, it was the very first experimental version. The spec was basic, and you needed to deploy a separate "ingress controller" binary to actually implement the rules. It established the concept that later evolved into the powerful Ingress we have now.

Releases In Branch 0.9

VersionRelease date
0.9.331 Jan 2015
(11 years ago)
0.9.228 Jan 2015
(11 years ago)
0.9.124 Jan 2015
(11 years ago)
0.9.021 Jan 2015
(11 years ago)