GKE Autopilot and EKS Fargate are two different things.

Kohei Ota
3 min readMar 6, 2021

One day, I saw this tweet.

and I have the answer. They are not similar in technical aspects, at least from my point of view as a third person(I don’t belong to either Google Cloud or AWS).

Google Cloud’s new GKE feature “Autopilot” collected a lot of attention because they finally released something *fully* managed, not just control plane, which can be compared to Fargate on EKS for that aspect.

The biggest technical difference here is that Autopilot is still based on Google Cloud’s IaaS technology, GCE while Fargate is based on some other technology than EC2.

Fargate is not EC2

Fargate is based on microVM technology called Firecracker, except they still seem like using Xen as of December, 2019.

You can also read the following article to understand what Firecracker is.

Important thing here is, that Fargate VM is created based on the Pod spec and every pod will have their own Fargate VM as their node. Each Pod has one individual Fargate VM. When a Pod is to be created, the fargate scheduler in EKS creates a Fargate VM as a node and assigns it to the Pod.

That behavior implies that you cannot use DaemonSet on Fargate. Thankfully you don’t have to worry about other node groups as you can specify a namespace to run workloads on Fargate using Fargate profile.

Autopilot is GCE

It is explained in the Google Cloud Documentation that Autopilot uses “Node Auto-provisioning” and “Cluster Autoscaler” on their environment.

With Autopilot clusters, you don’t need to worry about provisioning nodes or managing node pools because node pools are automatically provisioned through node auto-provisioning, and are automatically scaled to meet the requirements of your workloads.

Autopilot is basically collection of GCE E2 instances, but hidden and fully managed by Google Cloud. The instances still run on *your* VPC, but not shown on your Cloud Console. When you apply a Pod manifest on your Autopilot cluster, it will use “Node Auto-provisioning” to assign your Pod to a node and create a E2 instance (e2-medium by default). If the node still has capacity, other pods that you will deploy in the future can also be scheduled there.

If you have DaemonSet, it will also be deployed on the worker nodes. Which is a big difference from Fargate. In Autopilot cluster they don’t have any restriction there.

While they are based on the same GCE based technology, they have strong restrictions on the Autopilot cluster. For example, you cannot use privileged containers, configure kernel parameters, use SSH onto a node. They may also modify your Pod spec if it does not satisfy their preferences. It looks like they are using Gatekeeper there.

While Fargate can be combined with EC2 on the same EKS cluster, you must choose either Autopilot or not on GKE.

So this is another big difference from user side.

Conclusion

They are both managed, yes.

You cannot use SSH on neither platform.

You cannot change Linux kernel parameters on neither.

You can use DaemonSet on Autopilot, but not on Fargate.

You have to choose either Autopilot/non-Autopilot, but not Fargate and EC2.

Fargate scheduler assigns a Node(Fargate VM) just for your Pod, while Autopilot uses NAP functionality on GKE.

--

--

Kohei Ota

Architect at Hewlett Packard Enterprise, CNCF Ambassador, Opinions are my own.