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.