What's diff among Managed Node Groups, Self Managed Nodes, Fargate?

이민석's avatar
Mar 06, 2024
What's diff among Managed Node Groups, Self Managed Nodes, Fargate?

Introduction

Thank you for clicking through to my arcticle. I've been a DevOps engineer for 2 years in dev-team of 7 engineers.

My name is MINSEOK, LEE, but I use Unchaptered as an alias on the interenet. So, you can call me anythings "MINSEOK, LEE" or "Unchaptered" to ask something.

Topic

In this article, I'll cover this followings:

  1. Type 1 - Self Managed Nodes

  2. Type 2 - Managed Node Groups

  3. Type 3 - Fargate

What is the Kubernetes Node?

The kubernetes node means machine execute containerized application.

Each nodes have these elements.

  1. container runtime | software to have role of container execution

  2. kubelet | health check about pod connected by each containers

  3. kube-proxy | maintains network rules that allow communication to your pods.

You can choose each type to execute node.

  1. Self Managed Nodes

  2. Managed Node Groups

  3. Fargate (serverless compute)

Self Managed Nodes

AWS EKS (Docs) | EKS Self Managed Nodes

Self Managed Nodes is the EC2 instances directly managed by engineer. It allow to add into cluster. The user have a responsibility about oepration and security.

Managed Node Groups

AWS EKS (Docs) | EKS Managed Node Groups

Managed Node Group is the EC2 Instance Group managed by Amazon EKS. The user can execute container application without zero administration about containers of server or cluster.

Fargate

AWS EKS (Docs) | Fargate

It inherits all the basic features of Fargate.

The comparison of 3 types.

AWS EKS (Docs) | EKS Compute Userguide

Criteria

Self Managed Nodes

Managed Node Groups

Fargate
(Sls Compute)

Deployment

Can be deployed to
AWS Outposts

Yes

No

No

Can be deployed to
AWS Local Zone

Yes

No

No

Container with OS

Can run containers
that require Win

Yes
(Cluster need 1+ nodes at least.
As a availability aspect, need 2 nodes.)

Yes

No

Can run containers
that require Linux

Yes

Yes
 

Yes

Workloads

Can run workloads
that require the Inferentia Chip

Yes
(Linux nodes only)

Yes
(Linux nodes only)

No

Can run workloads
That require GPU

Yes
(Linux nodes only)

Yes
(Linux nodes only)

No

Can run AWS
Bottlerocket

Yes

Yes

No

Isolation and Sharing

Pods share a kernel runtime env with other pods

Yes
(Single kernel for all pods, each nodes)

Yes
(Single kernel for all pods, each nodes)

No
(Each kernel for each pods)

Pods share CPU,
MEM, Stroage and
Network resources
with other Pods

Yes
(Can result in unused resource on each node)

Yes
(Can result in unused resource on each node)

No
(Each pod has dedicated resources)
(Each pods can be sized idenpendently to maximize resource utilization)

Pods can use more
HW and mem than
requested in Pod
specs

Yes
(Maintain High Importance Service)

Yes
(Maintain High Importance Service)

No
(Can re-deploy pod with resized vCPU and MEM conf)

Management

Must deploy and
manage EC2 inst.

Yes
(Manual Configuration)
(Using Amazon EKS provided CloudFormation Template)
(Deploy Linux(x86/arm), Win nodes)

Yes
(With EKS Optimized AMI, Amazon EKS Automation provided)
(Without it, you can manually update instance)

No

Must secure, maintain and patch
the os of EC2 inst.

Yes

Yes

No

Can provide bootstrap at deployment of a node, such as extra kubelet args.

Yes
(Bootstrap Scripts Usage Information)

Yes
(Use eksctl or a launch template with custom AMI)

No

Can assign IP addresses to Pods from a different

Yes
(Customer networking for pods)

Yes
(Use launch template, such as Customizing managed nodes with launch templates)

No

Can SSH into node

Yes

Yes

No
(Fargate don't support SSH)

Can deploy your own custom AMI to nodes

Yes

Yes
(Using a launch template)

No

Can deploy your own custom CNI to nodes

Yes

Yes
(Using a launch template)

No

Must update node AMI on your own

Yes
(Must use other tools)
(Self Managed Node can't managed by AWS Console)

Yes
(Click in-place update by AWS Console)

No

Must update node kubernetes version
on your own

Yes
(Must use other tools)
(Self Managed Node can't managed by AWS Console)

Yes
(Click in-place update by AWS Console)

No

Storage

Can use EBS with Pods

Yes

Yes

No

Can use EFS with Pods

Yes

Yes

Yes

Can use FSx for Lustre with Pods

Yes

Yes

No

Networking

Can use NLB for services

Yes

Yes

Yes
(Optional)

Pods can run in a public subnet

Yes

Yes

No

Can assign different VPC security groups to individual pods

Yes
(Linux nodes only)

Yes
(Linux nodes only)

Yes

Can run kubernetes Daemonsets

Yes

Yes

No

Spport HostPort and HostNetwork in the Pod manifest

Yes

Yes

No

AWS Region Availability

Yes
(support all regions)

Yes
(support all regions)

No
(support partial regions)

Can run containers on Amazon EC2 dedicated hosts

Yes

Yes

No

Pricing

EC2 Pricing

EC2 Pricing

Fargate Pricing

Conclusion

In many situations, Managed Node Groups seems to be the easiest way to start and operate. Only if you have some specialized requirements, I think you'ld choose Self Managed Node or Fargate type.

Share article

Unchaptered