Amazon EKS — AWS CLI EKS Reference
Core aws eks commands for managing EKS clusters, node groups, add-ons, and access.
Cluster Operations
# Create cluster
aws eks create-cluster \
--name my-cluster \
--role-arn arn:aws:iam::123456789012:role/EKSClusterRole \
--resources-vpc-config subnetIds=subnet-abc,subnet-def,securityGroupIds=sg-123
# Describe cluster
aws eks describe-cluster --name my-cluster
# List clusters
aws eks list-clusters
# Update cluster version
aws eks update-cluster-version --name my-cluster --kubernetes-version 1.31
# Update cluster config (endpoint access)
aws eks update-cluster-config --name my-cluster \
--resources-vpc-config endpointPublicAccess=true,endpointPrivateAccess=true,publicAccessCidrs=["203.0.113.0/24"]
# Enable logging
aws eks update-cluster-config --name my-cluster \
--logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'
# Delete cluster
aws eks delete-cluster --name my-cluster
# Update kubeconfig
aws eks update-kubeconfig --name my-cluster --region us-east-1
Node Groups
# Create managed node group
aws eks create-nodegroup \
--cluster-name my-cluster \
--nodegroup-name main-nodes \
--node-role arn:aws:iam::123456789012:role/EKSNodeRole \
--subnets subnet-abc subnet-def \
--instance-types m6i.large \
--scaling-config minSize=1,maxSize=5,desiredSize=3
# List node groups
aws eks list-nodegroups --cluster-name my-cluster
# Describe node group
aws eks describe-nodegroup --cluster-name my-cluster --nodegroup-name main-nodes
# Update scaling
aws eks update-nodegroup-config --cluster-name my-cluster --nodegroup-name main-nodes \
--scaling-config minSize=2,maxSize=10,desiredSize=4
# Update node group version
aws eks update-nodegroup-version --cluster-name my-cluster --nodegroup-name main-nodes
# Delete node group
aws eks delete-nodegroup --cluster-name my-cluster --nodegroup-name main-nodes
Add-ons
# List available add-ons
aws eks describe-addon-versions --kubernetes-version 1.31 \
--query 'addons[*].{Name:addonName,Latest:addonVersions[0].addonVersion}'
# Create add-on
aws eks create-addon --cluster-name my-cluster \
--addon-name vpc-cni \
--service-account-role-arn arn:aws:iam::123456789012:role/VPCCNIRole \
--resolve-conflicts OVERWRITE
# List installed add-ons
aws eks list-addons --cluster-name my-cluster
# Describe add-on
aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni
# Update add-on
aws eks update-addon --cluster-name my-cluster \
--addon-name vpc-cni \
--addon-version v1.18.0-eksbuild.1 \
--resolve-conflicts OVERWRITE
# Delete add-on
aws eks delete-addon --cluster-name my-cluster --addon-name vpc-cni
Access Management
# List access entries
aws eks list-access-entries --cluster-name my-cluster
# Create access entry
aws eks create-access-entry \
--cluster-name my-cluster \
--principal-arn arn:aws:iam::123456789012:role/DevRole \
--type STANDARD
# Associate access policy
aws eks associate-access-policy \
--cluster-name my-cluster \
--principal-arn arn:aws:iam::123456789012:role/DevRole \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy \
--access-scope type=namespace,namespaces=production
# List access policies
aws eks list-access-policies
# Describe access entry
aws eks describe-access-entry \
--cluster-name my-cluster \
--principal-arn arn:aws:iam::123456789012:role/DevRole
# Delete access entry
aws eks delete-access-entry \
--cluster-name my-cluster \
--principal-arn arn:aws:iam::123456789012:role/DevRole
Fargate
# Create Fargate profile
aws eks create-fargate-profile \
--cluster-name my-cluster \
--fargate-profile-name fp-default \
--pod-execution-role-arn arn:aws:iam::123456789012:role/FargatePodRole \
--subnets subnet-abc subnet-def \
--selectors namespace=production
# List Fargate profiles
aws eks list-fargate-profiles --cluster-name my-cluster
# Describe
aws eks describe-fargate-profile --cluster-name my-cluster --fargate-profile-name fp-default
# Delete
aws eks delete-fargate-profile --cluster-name my-cluster --fargate-profile-name fp-default
Useful Query Patterns
# Cluster version and status
aws eks describe-cluster --name my-cluster \
--query 'cluster.{Name:name,Version:version,Status:status,Platform:platformVersion}'
# Endpoint configuration
aws eks describe-cluster --name my-cluster \
--query 'cluster.resourcesVpcConfig.{Public:endpointPublicAccess,Private:endpointPrivateAccess}'
# OIDC issuer
aws eks describe-cluster --name my-cluster \
--query 'cluster.identity.oidc.issuer' --output text
# Node group health
aws eks describe-nodegroup --cluster-name my-cluster --nodegroup-name main-nodes \
--query 'nodegroup.{Status:status,Health:health,DesiredSize:scalingConfig.desiredSize}'
# All add-on versions
aws eks list-addons --cluster-name my-cluster --output text | tr '\t' '\n' | while read addon; do
version=$(aws eks describe-addon --cluster-name my-cluster --addon-name $addon --query 'addon.addonVersion' --output text)
echo "$addon: $version"
done