Kubernetes version 1.16 has removed several deprecated APIs that you'll likely recognize and may use on a daily basis.
apps/v1beta2 APIs have been completely removed. In addition, the
extensions/v1beta1 API has been removed for select resources. Removal of these APIs impacts the following Kubernetes resources:
The good news is that replacement APIs are available now and have been for a long time. Every supported IBM Cloud Kubernetes Service version supports the replacement APIs. So, if you haven't started your transition, now is the time.
For more information, see the Kubernetes blog: "Deprecated APIs Removed In 1.16: Here’s What You Need To Know."
Overview of the replacement APIs
- Use the
- Use the
- Use the
Some tips to help you with this transition
Review kubectl last applied configurations
The Kubernetes kubectl command provides a very useful resource annotation—kubectl.kubernetes.io/last-applied-configuration—that can help you find Kubernetes resources created or updated via kubectl using the removed APIs.
Run the following commands as a cluster administrator to find all resources last applied using the impacted APIs. Any resources found are likely backed by YAML that you or someone that you depend on needs to change. More on converting your YAML later:
Review Kubernetes API server usage metrics
The Kubernetes API server provides API usage metrics that can help you find clients using the removed APIs.
Run the following commands as a cluster administrator. The commands filter out the
dashboard (i.e., Kubernetes Dashboard),
hyperkube (Kubernetes master and worker node components), and
kubectl clients since these clients will transition to the replacement APIs as part of the IBM Cloud Kubernetes Service upgrade process for version 1.16 and later. Since IBM Cloud Kubernetes Service clusters have highly available (HA) masters, you will have to run these commands several times to ensure data is collected from all three Kubernetes API servers.
Review your dependencies
Even if your apps are ready for this transition, a review of the earlier command results may identify dependencies that are not. For example, as of September 25, 2019, Helm version 2 is not ready for this transition. See this "Helm init fails on Kubernetes 1.16.0" ticket for details.
Convert your YAML
From the Kubernetes blog referenced earlier, "You can use the
kubectl convert command to automatically convert an existing object:
kubectl convert -f <file> --output-version <group>/<version>. ... Note that this may use non-ideal default values." Be sure to review and test the results of the conversion.
The Kubernetes blog "Deprecated APIs Removed In 1.16: Here’s What You Need To Know" and Kubernetes version 1.16 CHANGELOG identify other deprecated APIs that are targeted for removal in later releases.
Once you are ready for Kubernetes version 1.16, update your to-do list to include handling these future API removals. Also, please help get the message out and open issues so the entire Kubernetes community is ready for versions 1.16 and later.