Kubernetes 1.15 got out today! that's the 2nd Kuberentes release of 2019. I thought of sharing some highlights from this release.
In short, this release's highlights are:
- Improved Container Storage Interface (CSI)
- Improved Cluster Lifecycle Stability and Usability
- More Extensibility of core Kubernetes APIs, focued on Custom Resources Management
Improved Container Storage Interface (CSI)
Major improvements were around bringing CSI feature parity with in-tree functionality, such as resizing inline volumes. You can now also clone volumes (alpha feature) by specifying another PVC as a DataSource when provisioning a new volume, given that the underlying storage system supports this functionality.
Improved Cluster Lifecycle Stability and Usability
A lot of investments were done in kubeadm, which moved to v1beta2 from v1beta1 btw. You can now use kubeadm to provision and maintain high availability (HA) by using the familiar kubeadm init and kubeadm join commands.
Certificate management had great attention and now you can rotate all your certifications on upgrades before they expire during control plane upgrade.
More Extensibility of Core Kubernetes APIs
The main focus in this release on CRDs data and behavior consistency. OpenAPI based validation schema will now require eachto be validated against a structural schema. Itbasically enforces non-polymorphic and complete typing of each field in a CustomResource. Non-structural schema will work as is, but any serious CRD application is urged to migrate to structural schemas in the foreseeable future.
Other notable improvements to CRDs
- CustomResourceDefinitions with Kubernetes 1.15 gained the ability to convert between different versions on-the-fly via webhooks.
- OpenAPI publishing for CRDs will be available with Kubernetes 1.15 as beta for structural schemas only.
- Automatic removal of unknown fields enforces that only data structures specified by the CRD developer are persisted to etcd.
- CustomResourceDefinitions get support for defaulting. Defaults are set for unspecified field in an object sent to the API, and when reading from etcd.
This release is targeting some advanced features such CRDs and the convenience of running highly available & resilient Kubernetes clusters. I encourage you to check the release notes for a complete list of notable features and fixes.
If you are still getting started with Kubernetes, check this cool curation of The Best Kubernetes Tutorials