What Is New in Kubernetes 0.10
Kubernetes 0.10 builds on the previous release with significant enhancements to the API, networking, and overall cluster operations. This version introduces new resource types and provides more granular control for developers. The table below summarizes the key updates.
| Category | Changes |
|---|---|
| New Features | Ingress resource, Namespace API object, liveness/readiness probe support |
| API Updates | Pods now reference services by DNS, introduction of the LimitRange resource |
| Networking | kube-proxy rewrite, service environment variables deprecated for DNS |
| Usability & Tooling | kubectl rolling-update command, improved node management |
| Internal Improvements | Refactored node controller, scheduler performance enhancements |
How did Kubernetes 0.10 improve application routing?
The introduction of the Ingress resource is the headline feature for managing external access. Before this, exposing services was more manual and less flexible. Now you can define rules for routing HTTP/HTTPS traffic to services based on the hostname or path.
This is a game-changer for running multiple web applications behind a single load balancer. In practice, it means you can finally stop managing complex nginx configmaps manually for basic routing and let Kubernetes handle it declaratively.
What new ways to organize clusters were added?
Namespaces are now first-class API objects, moving beyond simple annotations. This formalizes resource isolation and quota management within a single cluster. You can now create, delete, and manage namespaces directly through the API.
We also got the LimitRange resource, which lets admins define default compute resource limits for pods within a namespace. This matters because it prevents a single runaway pod from consuming all the resources on a node by enforcing sensible defaults.
How did service discovery evolve in this release?
Kubernetes is fully committing to DNS for service discovery. The old method of injecting environment variables (like FOO_SERVICE_HOST) is now deprecated. Pods are encouraged to find services by their DNS name instead.
This is a much cleaner approach, especially for dynamic environments where services are created and destroyed frequently. You no longer have to worry about the order of service creation affecting which environment variables get injected into your pods.
What operational commands were introduced?
The kubectl rolling-update command landed, giving you a direct way to perform rolling updates on replication controllers without external scripts. This was a major quality-of-life improvement for day-to-day operations.
Under the hood, the node controller was refactored to be more robust, and the scheduler's performance saw noticeable improvements. These changes made the control plane more stable and responsive at scale.
FAQ
Should I use the new Ingress resource instead of a LoadBalancer service?
It depends. Use Ingress for HTTP/HTTPS routing rules and hosting multiple websites. Stick with LoadBalancer if you need a direct L4 TCP/UDP load balancer for non-HTTP services.
Is it mandatory to use DNS for service discovery now?
No, the environment variable method is only deprecated, not removed. Your existing pods will keep working, but all new development should use DNS lookups.
What is the practical benefit of making Namespaces a full API object?
It allows for proper lifecycle management through the API and enables tools to manage namespaces programmatically. You can now define quotas and policies that are scoped to a namespace.
How do liveness and readiness probes work?
They let you define health checks for your containers. Liveness probes restart a container if it fails, while readiness probes stop sending traffic to a pod that isn't ready. This greatly improves application reliability.
Does the rolling-update command work with any pod?
It only works with pods managed by a ReplicationController. You specify the old and new controller names and the tool handles the gradual rollout for you.