What Is New in Kubernetes 1.17
Kubernetes 1.17 delivers a focused set of enhancements, primarily around storage, custom resources, and the continued march towards general availability for key features. This release stabilizes several critical APIs that developers have been using in beta.
| Category | Key Updates |
|---|---|
| New Features & Enhancements | Volume Snapshot moves to GA, CustomResourceDefinition structural schemas and pruning become beta, topology-aware service routing enters beta. |
| API Changes | Several beta APIs graduate to stable/v1, including Kubernetes Metrics Server and CSI topology. |
| CLI & Tooling | kubectl get and describe output improvements for CustomResourceDefinitions, enhanced event recording. |
| Deprecations & Removals | Continued deprecation of extensions/v1beta1, apps/v1beta1, and apps/v1beta2 APIs; removal of certain feature gates. |
How did storage and data management improve in 1.17?
The headline storage feature is the promotion of the Volume Snapshot feature to general availability (GA). This
means the snapshot.storage.k8s.io/v1 API is now stable and production-ready. You can now take
crash-consistent snapshots of your persistent volumes and provision new volumes from those snapshots as a
standard, reliable operation.
In practice, this allows for much better data management workflows, like backing up database state or creating clones for testing. The associated CSI external-snapshotter sidecar also moved to v2, which supports this GA API.
What changed for CustomResourceDefinitions (CRDs)?
Two major CRD features entered beta: defaulting and pruning with structural schemas. This is a big deal for anyone building operators or custom controllers.
Structural schemas enforce a strict OpenAPI v3 schema for your custom resources, preventing arbitrary,
non-specified data in the spec or status. Pruning automatically strips any fields not
defined in the schema before persisting the object to etcd. This keeps your data clean and etcd size in check.
You can now also define defaults for your CRD fields, making resource definitions less verbose.
Example: Enabling a structural schema
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
...
spec:
versions:
- name: v1
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
replicas:
type: integer
default: 1 # Defaulting in action
Are there new capabilities for service networking?
Yes, Service Topology entered beta. This feature allows you to route service traffic to endpoints within the same zone or region, which is crucial for reducing latency and cost in multi-zone clusters.
You can use a service annotation like service.kubernetes.io/topology-aware-hints to enable it. The
kube-proxy and EndpointSlice controller then work together to ensure traffic prefers endpoints that are
topologically close to the client pod. This matters because it makes services smarter in cloud environments
without needing complex external mesh configurations.
What APIs graduated to stable in this release?
Several APIs finally shed their beta labels. The most significant graduations are for the Kubernetes Metrics API,
which is now metrics.k8s.io/v1, and the core CSI node info and topology APIs, which are now
csi.storage.k8s.io/v1.
For cluster operators, this means the Metrics Server can be deployed with a stable API, and CSI drivers can rely on a stable interface for node-specific information. It signals that these components are mature and their APIs won't break in future releases.
What should I know about deprecated features?
The deprecation of older, redundant API groups continues. The extensions/v1beta1,
apps/v1beta1, and apps/v1beta2 API versions for Deployments, DaemonSets, and
ReplicaSets are no longer served in 1.17. You must migrate all your manifests to the apps/v1 API,
which has been stable since 1.9.
Additionally, the ClusterFirstWithHostNet DNS policy is now deprecated. If your pod uses
hostNetwork, you should explicitly set its DNS policy to either ClusterFirst or
Default.
FAQ
Is the Volume Snapshot feature safe to use in production now?
Yes, with the API moving to v1
GA in 1.17, it is considered stable for production use. However, always ensure your specific CSI driver and
underlying storage system also support the stable snapshot operations.
My CRDs work fine now. Why should I care about structural schemas?
Structural schemas and
pruning prevent "garbage" data from accumulating in your etcd from mistyped field names or old CRD versions.
This improves cluster performance and reliability. It's a best practice to adopt them for any serious CRD.
I use old API versions like `extensions/v1beta1` for my Deployments. Will they break?
Yes,
they are completely removed in 1.17. You must update your YAML files and Helm charts to use `apps/v1`. The
kubectl tool can help you convert existing resources.
What exactly does Service Topology solve?
It solves the problem of a service in a US-West pod
talking to an endpoint in US-East when a closer one exists in US-West. This reduces cross-zone network traffic
costs and improves application latency significantly in multi-zone clusters.
Are there any new kubectl features?
The main improvements are better visual output for
`kubectl get` and `describe` when working with CRDs, making it easier to understand the state of your custom
resources. Event recording for more API operations was also added to provide better audit trails.