AWS EKS is way behind what Google Cloud provides.
We are dealing with kubernetes in the cloud already 4 years but on Google Cloud. Recently client asked to improve infrastructure by moving microservices onto some kind of container scheduler, client was on AWS so we agreed on to try eks (will compare eks to ecs in another article).
We have spent lots of time trying to setup basic production ready kubernetes cluster.
To be able to use k8s in production environment you will need:
- use kubectl (basically everything)
- application level load balancing (ingress)
- mount storages
- managing nodegroups
Necessary to control your applications, all good with both but you will need to setup access when dealing AWS as does not come out of the box.
Application level load balancing (ingress)
At google cloud comes out of the box, automatically integrates with Google Cloud Load Balancers when at AWS you will need to setup manually, run extra containers on your own and waste resources (ec2), basically pay to automate.
Thos containers will have to run in the cluster even though they will be modifying the infrastructure few times a lifetime.
You need to setup provisioner for storages which is super complicated as consists of several moving parts and lots of things go wrong. In most of cases resources better delete and create again instead of updating as it does not affect immediately or at all.
At google cloud this comes out of the box, everything is perfectly setup and one can see and filter each deployment logs separately, setup custom metrics.
With AWS one has to setup fluentd and again wast own cluster resource. Time wasted on setup and debugging, fluentd needs to be maintained (cost) and computing resources wasted, not easy to filter streams as everything ends up in single log group (probably possible to configure in fluentd but could not find solution).
Log levels are not preserved so everything goes under same level and no easy way to filter errors/warnings when at Google Cloud things are clear and one can filter.
At google cloud there are metrics out of the box fo the cluster and applications (cpu/memory/disk usage) which is not the case for AWS EKS.
AWS EKS has managed node groups but not clear what does that mean, I would imagine autoscaling without limits watching on cloud resources but somehow deleting node from did not result in new one being created, nodegroup is managed by Cloud Formation which does not react on cluster changes.
Un-managed nodegroups work better but somehow it is not recommended from the beginning.
You pay for EKS separately when at Google Cloud the you pay only for nodes (computing resource).
The feeling is AWS created EKS to tell that they support it but you better not use it as it is super hard and costly so maybe use ECS instead.
I understand that it is not easy to migrate from one cloud to another and also understand that AWS has lots of great services which work better than google alternatives but still, for developers Google Cloud Kubernetes Engine is very easy to use and production ready from the moment it is created which is not the case at all with AWS EKS.
Hope AWS will somehow hear the message and improve their service.