We have started rolling out AKS and EKS 1.21. This brings both our supported AKS and EKS platforms on Kubernetes v1.21.2
.
Upon writing we have already upgraded all non-production clusters. Production clusters will follow in the next days after some extra validation.
Important changes between K8s 1.20 and 1.21
For more detailed info on what’s new and changed, please make sure to check the Kubernetes 1.21 release announcement and the full Kubernetes 1.21.x changelog.
Here’s a small list of some major themes:
-
CronJobs graduate to stable!
If you’re using CronJobs, you should migrate them to the
apiVersion: batch/v1
spec. -
Immutable Secrets and ConfigMaps
These resources introduce a new
immutable
field. Whentrue
this will reject any updates to these resources and comes with the following advantages:- Protection from accidental or unwanted updates that could cause applications outages
- Reduces load on the K8s API server significantly, by closing watches for ConfigMaps/Secrets marked as immutable
-
Graceful Node shutdown has graduated to beta.
With this update, the kubelet will gracefully terminate Pods during a node shutdown. Before this update workload problems were possible during a node shutdown because Pods didn’t follow the normal, expected termination lifecycle.
-
[PodSecurityPolicies] are now deprecated
Currently there’s no replacement ready yet and current PSPs will still be functional for several more releases. To learn more, read PodSecurityPolicy Deprecation: Past, Present, and Future.
AKS specific changes
For AKS clusters, this update enables the CSI drivers for Azure Disk and Azure Files. The default Storage Class now uses standard SSD LRS storage through the CSI driver.
You can now use the following available Storage Classes:
managed-csi
ordefault
: Uses Azure Standard SSD locally redundant storage (LRS) to create a managed disk.managed-csi-premium
: Uses Azure Premium LRS to create a managed disk.azurefile-csi
: Uses Azure Standard Storage to create an Azure Files share.azurefile-csi-premium
: Uses Azure Premium Storage to create an Azure Files share.
Please refer to the Azure Disk CSI drivers and Azure Files CSI drivers documentation for more information.
EKS specific changes
In the process of upgrading EKS the following components have also been upgraded:
- KubeProxy from
v1.20.4
tov1.21.2
- CoreDNS from
v1.8.3
tov1.8.4
- Cluster Autoscaler from
v1.20.0
tov1.21.0
Actions to take
This is the last version before support for the many deprecated API versions is dropped in Kubernetes 1.22! Make sure to check out the deprecated API migration guide for more details.
Below you will find more details on some of the most common deprecated resources used by our customers.
Deprecated API removal for Ingress
If you haven’t already, you need to migrate your Ingress
resources to the new GA apiVersion of networking.k8s.io/v1
!
Notable changes between networking.k8s.io/v1beta1
and networking.k8s.io/v1
:
spec.backend
is renamed tospec.defaultBackend
- The backend
serviceName
field is renamed toservice.name
- Numeric backend
servicePort
fields are renamed toservice.port.number
- String backend
servicePort
fields are renamed toservice.port.name
pathType
is now required for each specified path. Options arePrefix
,Exact
, andImplementationSpecific
. To match the undefinedv1beta1
behavior, useImplementationSpecific
The networking.k8s.io/v1
spec also comes with an ingressClassName
field as replacement for the deprecated kubernetes.io/ingress.class
annotation. By default, on our platform you can now set ingressClassName: nginx
or ingressClassName: nginx-internal
respectively.
For example, a simple Ingress resource would look like this:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/tls-acme: "true"
name: marketing-website
namespace: production
spec:
ingressClassName: nginx
rules:
- host: www.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
name: http
tls:
- secretName: www-example-com-tls
hosts:
- www.example.com
Check out the upstream Ingress page for more examples.
Deprecated API removal for RBAC
Similar to Ingress, Kubernetes 1.22 will drop support for the rbac.authorization.k8s.io/v1beta1
API version. This impacts the resources: ClusterRole
, ClusterRoleBinding
, Role
, and RoleBinding
.
Please make sure to update the apiVersion
of these resources to rbac.authorization.k8s.io/v1
.