Latest in branch 0.16
0.16.2
Released 04 May 2015
(11 years ago)
SoftwareKubernetes
Version0.16
Status
End of life
Initial release0.16.0
29 Apr 2015
(11 years ago)
Latest release0.16.2
04 May 2015
(11 years ago)
End of supportUnavailable
End of security fixesUnavailable
Release noteshttps://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-0.16.md
Source codehttps://github.com/kubernetes/kubernetes/tree/v0.16.2
Documentationhttps://v0-16.docs.kubernetes.io/
Kubernetes 0.16 ReleasesView full list

What Is New in Kubernetes 0.16

Kubernetes 0.16 introduces significant enhancements to the scheduler, service management, and overall API stability. This release focuses on maturing core components for production use cases.

Category Key Changes
New Features Pod Termination Grace Periods, Node Affinity
API Changes PersistentVolume API, Service 'portalIPs' field
Scheduler Extensible scheduler predicates, Configurable policies
Bug Fixes Service IP allocation, Pod lifecycle events

How did scheduling improve in this release?

The scheduler became far more flexible and powerful. We can now define custom predicates to control pod placement logic, moving beyond the built-in rules.

This means you can write logic that says "only run this pod on nodes with a specific SSD type" or "avoid nodes running a particular daemonset." The policy API lets you bundle these rules together for different workload types.

What changes were made to service management?

Service stability got a major boost with fixes to IP allocation and a new API field. The system was prone to issues where it would assign a service IP that was already in use, causing conflicts.

They fixed the allocation logic to prevent those clashes. They also added the portalIPs field to the Service API, giving us a clearer way to work with the IP addresses assigned to services, which is foundational for any network debugging.

Why is the PersistentVolume API update important?

This change formalizes how we claim storage resources. Before, the relationship between a PersistentVolume (PV) and a PersistentVolumeClaim (PVC) was more implicit.

The updated API makes this binding explicit and API-driven. In practice, this means better visibility into the storage lifecycle and fewer orphaned volumes because the control plane has a clearer picture of what's allocated and what's free.

How does node affinity change pod deployment?

Node affinity is the predecessor to more advanced node selection constraints. It allows you to express a pod's preference for nodes with certain labels, like a specific hardware architecture or failure zone.

This is a step up from the basic nodeSelector because it allows for softer preferences ("prefer this zone") alongside hard requirements ("must have this GPU"), giving schedulers more flexibility to meet your intent.

FAQ

What exactly does the pod termination grace period do?
It defines the time a pod has to shut down gracefully before it's killed forcibly. This is crucial for stateful applications that need to finish writes or close network connections cleanly. You set it with spec.terminationGracePeriodSeconds in your pod spec.

I had service IP conflicts before--is that fixed?
Yes, the bug in the IP allocation logic that could assign an already-in-use IP address to a new Service was patched in this release. This should eliminate those frustrating network conflicts.

Can I write my own custom scheduler rules now?
Yes, the scheduler became extensible. You can implement custom predicates (rules for filtering out nodes) and priorities (scoring for choosing between nodes). This allows for highly custom scheduling behavior tailored to your cluster's needs.

Is the PersistentVolume API change backwards compatible?
For the most part, yes. Existing volumes and claims should continue to work, but the new API fields provide a more explicit and reliable way to manage the binding between a PV and a PVC moving forward.

How do I start using node affinity?
You add an affinity section to your pod's spec. Inside it, you define nodeAffinity with required or preferred conditions based on node labels. This gives you much finer control than the simple nodeSelector.

Releases In Branch 0.16

VersionRelease date
0.16.204 May 2015
(11 years ago)
0.16.101 May 2015
(11 years ago)
0.16.029 Apr 2015
(11 years ago)