

 **Help improve this page** 

To contribute to this user guide, choose the **Edit this page on GitHub** link that is located in the right pane of every page.

# Manage compute resources by using nodes
<a name="eks-compute"></a>

A Kubernetes node is a machine that runs containerized applications. Each node has the following components:
+  ** [Container runtime](https://kubernetes.io/docs/setup/production-environment/container-runtimes/) ** – Software that’s responsible for running the containers.
+  ** [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) ** – Makes sure that containers are healthy and running within their associated Pod.
+  ** [kube-proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/) ** – Maintains network rules that allow communication to your Pods.

For more information, see [Nodes](https://kubernetes.io/docs/concepts/architecture/nodes/) in the Kubernetes documentation.

Your Amazon EKS cluster can schedule Pods on any combination of [EKS Auto Mode managed nodes](automode.md), [self-managed nodes](worker.md), [Amazon EKS managed node groups](managed-node-groups.md), [AWS Fargate](fargate.md), and [Amazon EKS Hybrid Nodes](hybrid-nodes-overview.md). To learn more about nodes deployed in your cluster, see [View Kubernetes resources in the AWS Management Console](view-kubernetes-resources.md).

**Note**  
Excluding hybrid nodes, nodes must be in the same VPC as the subnets you selected when you created the cluster. However, the nodes don’t have to be in the same subnets.

## Compare compute options
<a name="_compare_compute_options"></a>

The following table provides several criteria to evaluate when deciding which options best meet your requirements. Self-managed nodes are another option which support all of the criteria listed, but they require a lot more manual maintenance. For more information, see [Maintain nodes yourself with self-managed nodes](worker.md).

**Note**  
Bottlerocket has some specific differences from the general information in this table. For more information, see the Bottlerocket [documentation](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md) on GitHub.


| Criteria | EKS managed node groups | EKS Auto Mode | Amazon EKS Hybrid Nodes | 
| --- | --- | --- | --- | 
| Can be deployed to [AWS Outposts](https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html)  | No | No | No | 
| Can be deployed to an [AWS Local Zone](local-zones.md)  | Yes | No | No | 
| Can run containers that require Windows | Yes | No | No | 
| Can run containers that require Linux | Yes | Yes | Yes | 
| Can run workloads that require the Inferentia chip |  [Yes](inferentia-support.md) – Amazon Linux nodes only | Yes | No | 
| Can run workloads that require a GPU |  [Yes](eks-optimized-ami.md#gpu-ami) – Amazon Linux nodes only | Yes | Yes | 
| Can run workloads that require Arm processors |  [Yes](eks-optimized-ami.md#arm-ami)  | Yes | Yes | 
| Can run AWS [Bottlerocket](https://aws.amazon.com/bottlerocket/)  | Yes | Yes | No | 
| Pods share CPU, memory, storage, and network resources with other Pods. | Yes | Yes | Yes | 
| Must deploy and manage Amazon EC2 instances | Yes | No - Learn about [EC2 managed instances](automode-learn-instances.md)  | Yes – the on-premises physical or virtual machines are managed by you with your choice of tooling. | 
| Must secure, maintain, and patch the operating system of Amazon EC2 instances | Yes | No | Yes – the operating system running on your physical or virtual machines are managed by you with your choice of tooling. | 
| Can provide bootstrap arguments at deployment of a node, such as extra [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) arguments. | Yes – Using `eksctl` or a [launch template](launch-templates.md) with a custom AMI. | No - [Use a `NodeClass` to configure nodes](create-node-class.md)  | Yes - you can customize bootstrap arguments with nodeadm. See [Hybrid nodes `nodeadm` reference](hybrid-nodes-nodeadm.md). | 
| Can assign IP addresses to Pods from a different CIDR block than the IP address assigned to the node. | Yes – Using a launch template with a custom AMI. For more information, see [Customize managed nodes with launch templates](launch-templates.md). | No | Yes - see [Configure CNI for hybrid nodes](hybrid-nodes-cni.md). | 
| Can SSH into node | Yes | No - [Learn how to troubleshoot nodes](auto-troubleshoot.md)  | Yes | 
| Can deploy your own custom AMI to nodes | Yes – Using a [launch template](launch-templates.md)  | No | Yes | 
| Can deploy your own custom CNI to nodes | Yes – Using a [launch template](launch-templates.md) with a custom AMI | No | Yes | 
| Must update node AMI on your own |  [Yes](update-managed-node-group.md) – If you deployed an Amazon EKS optimized AMI, you’re notified in the Amazon EKS console when updates are available. You can perform the update with one-click in the console. If you deployed a custom AMI, you’re not notified in the Amazon EKS console when updates are available. You must perform the update on your own. | No | Yes - the operating system running on your physical or virtual machines is managed by you with your choice of tooling. See [Prepare operating system for hybrid nodes](hybrid-nodes-os.md). | 
| Must update node Kubernetes version on your own |  [Yes](update-managed-node-group.md) – If you deployed an Amazon EKS optimized AMI, you’re notified in the Amazon EKS console when updates are available. You can perform the update with one-click in the console. If you deployed a custom AMI, you’re not notified in the Amazon EKS console when updates are available. You must perform the update on your own. | No | Yes - you manage hybrid nodes upgrades with your own choice of tooling or with `nodeadm`. See [Upgrade hybrid nodes for your cluster](hybrid-nodes-upgrade.md). | 
| Can use Amazon EBS storage with Pods |  [Yes](ebs-csi.md)  | Yes, as an integrated capability. Learn how to [create a storage class.](create-storage-class.md)  | No | 
| Can use Amazon EFS storage with Pods |  [Yes](efs-csi.md)  | Yes | No | 
| Can use Amazon S3 Files storage with Pods |  [Yes](s3files-csi.md)  | Yes | No | 
| Can use Amazon FSx for Lustre storage with Pods |  [Yes](fsx-csi.md)  | Yes | No | 
| Can use Network Load Balancer for services |  [Yes](network-load-balancing.md)  | Yes | Yes - must use target type `ip`. | 
| Pods can run in a public subnet | Yes | Yes | No - pods run in on-premises environment. | 
| Can assign different VPC security groups to individual Pods |  [Yes](security-groups-for-pods.md) – Linux nodes only | No | No | 
| Can run Kubernetes DaemonSets | Yes | Yes | Yes | 
| Support `HostPort` and `HostNetwork` in the Pod manifest | Yes | Yes | Yes | 
|  AWS Region availability |  [All Amazon EKS supported regions](https://docs.aws.amazon.com/general/latest/gr/eks.html)  |  [All Amazon EKS supported regions](https://docs.aws.amazon.com/general/latest/gr/eks.html)  |  [All Amazon EKS supported regions](https://docs.aws.amazon.com/general/latest/gr/eks.html) except the AWS GovCloud (US) Regions and the China Regions. | 
| Can run containers on Amazon EC2 dedicated hosts | Yes | No | No | 
| Pricing | Cost of Amazon EC2 instance that runs multiple Pods. For more information, see [Amazon EC2 pricing](https://aws.amazon.com/ec2/pricing/). | When EKS Auto Mode is enabled in your cluster, you pay a separate fee, in addition to the standard EC2 instance charges, for the instances launched using Auto Mode’s compute capability. The amount varies with the instance type launched and the AWS region where your cluster is located. For more information, see [Amazon EKS pricing](https://aws.amazon.com/eks/pricing/). | Cost of hybrid nodes vCPU per hour. For more information, see [Amazon EKS pricing](https://aws.amazon.com/eks/pricing/). | 