Recently, I had the chance to upgrade AWS EKS with managed node group, and having worked with GCP GKE before, I came to a conclusion that GKE seems to be more matured overall.

A google search to validate my opinion yielded the following Reddit posts:

  • https://www.reddit.com/r/googlecloud/comments/ejxxn5/has_anyone_done_a_thorough_diff_analysis_between/
  • https://www.reddit.com/r/kubernetes/comments/9qg1wz/how_good_is_eks_vs_gce/

A quick look through the comments and we can identify that most users have a more positive experience with GKE.

From my experience, i had the following peeves about AWS EKS:

  • we need to maintain add-ons installation and upgrade on the cluster, by add-ons i mean stuff like cluster-autoscaler, kube-proxy, kube-dns… etc
    • this took the managed experience out of AWS EKS.
  • we have no way to configure the way AWS surges node when performing node eviction, this is directly comparing to https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-upgrades#surge
    • there can be situations whereby AWS can overprovision nodes, increasing the amount of time it takes for an upgrade to complete.
  • the aws documentation on the update behaviour is at a bare minimum, we do not have an idea of what are the conditions during the upgrade that can cause failure
    • comparing https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-upgrades#node_pool_upgrades to https://docs.aws.amazon.com/eks/latest/userguide/managed-node-update-behavior.html
  • there are additional initial setup that needs to be done during creation of a cluster to get to a good working state, whereas GKE normally provides these setups in terms of cluster configurations through flags.