Steps to Update AWS EKS Cluster
Introduction
Amazon Elastic Kubernetes Service (Amazon EKS) is a part of AWS services that anyone can use to run Kubernetes on AWS without needing to install, operate, and maintain your own Kubernetes control plane or nodes which is also the basic benefit of using cloud services allows you to use the managed services by the provider. Kubernetes is an open-source system for automating the deployment, scaling using auto-scaling groups, and management of containerized applications.
Amazon EKS
- AWS EKS runs and manages all the Kubernetes services for you in different AWS Availability Zones which ultimately ensure the high availability of your service.
- Automatically scales control plane instances based on load, detects and replaces unhealthy control plane instances, and it provides automated version updates and patching for them.
- AWS automatically scales the infrastructure associated with the service and controls all the instances to update and provide all the dependencies related to the service.
- Is integrated with many AWS services to provide scalability and security for your applications, including the following capabilities:
- Amazon ECR for container images
- Elastic Load Balancing for load distribution over instances
- IAM for authentication of the user
- Amazon VPC for a secure environment
Problem Statement
The version of EKS Cluster is outdated i.e. 1.18 and the latest version is 1.22, Running an older version of EKS Cluster is not applicable to handle all the latest plugins and tooling from the Kubernetes community. AWS also stops support for older versions of the cluster which is not a good practice to handle any cluster. The best practice is to run up-to-date versions of the open-source software, so you can use all of the existing plugins and tooling from the Kubernetes community. Applications that are running on Amazon EKS are fully compatible with applications running on any standard Kubernetes environment, no matter whether they’re running in on-premises data centres or public clouds. This means that you can easily migrate any standard Kubernetes application to Amazon EKS without any code modification.
Solution Approach
Login to AWS Management Console Open the Amazon EKS console
Choose the name of the Amazon EKS cluster to update and choose the Update cluster version.
The update takes some time to complete 15 min approx. In my case, After the cluster is updated successfully, update the node group to the same version as the version of the cluster. The reason is any new pod that is launched after update has a kubelet version that matches your cluster version. Existing Fargate pods aren’t changed.
The node group is updated under the compute inside the cluster.
After clicking on Update now option the new pop up window will appear to confirm the Update strategy you want to use during the updation process,
For Update strategy, select one of the following options and then choose Update.
- Rolling update – This option respects the pod disruption budgets for your cluster. Updates fail if there’s a pod disruption budget issue that causes Amazon EKS to be unable to gracefully drain the pods that are running on this node group.
- Force update – This option doesn’t respect pod disruption budgets. Updates occur regardless of pod disruption budget issues by forcing node restarts to occur.
Repeat the process of updating till the latest version of the cluster and node group is achieved.
Debugging
There may be an error occurring during the update process of the node group associated with the EKS Cluster that may be due to the version of Launch Template Default Version by opening the associated Auto Scaling Group (ASG) one can change the default version of launch template to the desired one.
Update Node Group version – The option is not showing if the deployment is done through the custom AMI or AWS EKS AMI is currently run on the latest version for the cluster.
Launch template version – This option is unavailable if the node group is deployed without a custom launch template. You can only update the launch template version for a node group that has been deployed with a custom launch template. Select the version that you want to update the node group to. If your node group is configured with a custom AMI, then the version that you select must also specify an AMI. When you upgrade to a newer version of your launch template, every node is recycled to match the new configuration of the launch template version specified.
Conclusion
The new version of Cluster has full AWS support during any downtime and also has all the new features and plugins access.
The new version of Kubernetes has introduced new changes which are ultimately going to enhance the use of the service. Although it is recommended to test the behaviour of the running application with the new version of the Kubernetes before proceeding with the cluster updation process.