with one click
aws-eks
// Amazon Elastic Kubernetes Service (EKS) for running Kubernetes on AWS. Use for container orchestration, deploying applications, managing clusters, and Kubernetes workloads on AWS.
// Amazon Elastic Kubernetes Service (EKS) for running Kubernetes on AWS. Use for container orchestration, deploying applications, managing clusters, and Kubernetes workloads on AWS.
| name | aws-eks |
| description | Amazon Elastic Kubernetes Service (EKS) for running Kubernetes on AWS. Use for container orchestration, deploying applications, managing clusters, and Kubernetes workloads on AWS. |
Comprehensive assistance with Amazon EKS development, cluster management, and Kubernetes workloads on AWS.
Trigger this skill when working with:
CriticalAddonsOnly taint# Simple cluster creation with default settings
eksctl create cluster --name my-cluster --region us-west-2
# With specific node configuration
eksctl create cluster \
--name my-cluster \
--region us-west-2 \
--nodegroup-name standard-workers \
--node-type t3.medium \
--nodes 3 \
--nodes-min 1 \
--nodes-max 4
Use when: Starting a new EKS cluster quickly with standard configuration.
# Command-line approach
eksctl create cluster --name auto-cluster --enable-auto-mode
# YAML configuration approach
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-auto-cluster
region: us-west-2
autoModeConfig:
enabled: true
# Leave nodePools empty for defaults (general-purpose, system)
nodePools: []
Use when: You want AWS to manage compute resources automatically without configuring node groups.
# Create namespace
kubectl create namespace eks-sample-app
# Deploy application
kubectl apply -n eks-sample-app -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: eks-sample-deployment
spec:
replicas: 3
selector:
matchLabels:
app: eks-sample
template:
metadata:
labels:
app: eks-sample
spec:
containers:
- name: nginx
image: public.ecr.aws/nginx/nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: eks-sample-service
spec:
selector:
app: eks-sample
ports:
- port: 80
targetPort: 80
type: LoadBalancer
EOF
Use when: Deploying a simple application with load balancer exposure.
# Check add-on type
aws eks describe-addon-versions --addon-name metrics-server
# Install via AWS API
aws eks create-addon \
--cluster-name my-cluster \
--addon-name metrics-server \
--addon-version v1.0.0-eksbuild.1
# Verify installation
kubectl get deployment metrics-server -n kube-system
Use when: Adding the Kubernetes Metrics Server for resource monitoring and HPA.
# Deploy sample application
kubectl apply -f https://k8s.io/examples/application/php-apache.yaml
# Create autoscaler (scale between 1-10 pods at 50% CPU)
kubectl autoscale deployment php-apache \
--cpu-percent=50 \
--min=1 \
--max=10
# Check autoscaler status
kubectl get hpa
# Generate load to test scaling
kubectl run -i --tty load-generator --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
Use when: Implementing automatic scaling based on CPU utilization.
apiVersion: apps/v1
kind: Deployment
metadata:
name: critical-addon
namespace: kube-system
spec:
replicas: 2
selector:
matchLabels:
app: critical-addon
template:
metadata:
labels:
app: critical-addon
spec:
# Select system node pool
nodeSelector:
eks.amazonaws.com/compute-type: auto
karpenter.sh/nodepool: system
# Tolerate system node taint
tolerations:
- key: CriticalAddonsOnly
operator: Exists
effect: NoSchedule
containers:
- name: app
image: critical-app:latest
Use when: Running critical infrastructure components on dedicated system nodes in EKS Auto Mode.
# Create trust policy
cat > eks-cluster-role-trust-policy.json <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "eks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
# Create IAM role
aws iam create-role \
--role-name myEKSClusterRole \
--assume-role-policy-document file://eks-cluster-role-trust-policy.json
# Attach required policy
aws iam attach-role-policy \
--role-name myEKSClusterRole \
--policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
Use when: Setting up IAM permissions for EKS cluster control plane.
# Create namespace
kubectl create namespace prometheus
# Add Helm repository
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# Install Prometheus
helm install prometheus prometheus-community/prometheus \
--namespace prometheus \
--set alertmanager.persistentVolume.storageClass="gp2" \
--set server.persistentVolume.storageClass="gp2"
# Port forward to access dashboard
kubectl port-forward -n prometheus deploy/prometheus-server 9090
Use when: Setting up comprehensive monitoring for your EKS cluster.
# Create cluster with IPv6
aws eks create-cluster \
--name my-ipv6-cluster \
--kubernetes-network-config ipFamily=ipv6 \
--vpc-config subnetIds=subnet-xxx,subnet-yyy,securityGroupIds=sg-xxx \
--role-arn arn:aws:iam::account-id:role/myEKSClusterRole
# Get IPv6 service CIDR
aws eks describe-cluster \
--name my-ipv6-cluster \
--query cluster.kubernetesNetworkConfig.serviceIpv6Cidr \
--output text
Use when: Building IPv6-native clusters to avoid IPv4 address exhaustion.
# Create namespace
kubectl create namespace game-2048 --save-config
# Deploy application with ingress
kubectl apply -n game-2048 -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.8.0/docs/examples/2048/2048_full.yaml
# Get ingress address
kubectl get ingress -n game-2048
# Output will show ALB address:
# NAME CLASS HOSTS ADDRESS PORTS AGE
# ingress-2048 alb * k8s-game2048-ingress2-xxx.region.elb.amazonaws.com 80 30s
Use when: Exposing applications via AWS Application Load Balancer with Kubernetes Ingress.
This skill includes comprehensive documentation in references/:
When to read: Installing or managing cluster add-ons, configuring system node pools.
When to read: Creating new clusters, troubleshooting cluster issues, configuring monitoring.
When to read: Deploying applications, setting up monitoring, configuring autoscaling.
When to read: First-time EKS setup, onboarding new team members.
When to read: Configuring cluster networking, troubleshooting connectivity, setting up load balancers.
When to read: Managing compute resources, configuring node groups, setting up Fargate.
When to read: Implementing security best practices, configuring IAM permissions, certificate management.
When to read: API integration, advanced use cases, troubleshooting complex issues.
getting_started.md for fundamental concepts and your first clusternetworking.mdaddons.mdsecurity.mdnetworking.mdother.mdview command to read specific sections of large reference filesgetting_started.md → Example 1 (cluster creation) → Example 3 (deploy app) → Example 4 (add monitoring)
cluster_management.md → security.md (IAM) → networking.md (VPC/IPv6) → addons.md (install essentials) → deployment.md (deploy workloads)
cluster_management.md (observability dashboard) → nodes.md (node health) → networking.md (connectivity) → other.md (common issues)
Example 2 (create Auto Mode cluster) → nodes.md (understand node pools) → Example 6 (critical add-ons) → deployment.md (migrate workloads)
To refresh this skill with updated documentation: