Kubernetes Clusters
Create and manage production-grade Kubernetes clusters on AWS EKS with automated setup and best practices built-in.
What is Kubernetes?
Kubernetes (K8s) is an open-source container orchestration platform that automates deployment, scaling, and management of containerized applications.
Key Benefits:
- Auto-scaling - Scale applications based on demand
- Self-healing - Automatically restart failed containers
- Load balancing - Distribute traffic across pods
- Rolling updates - Deploy without downtime
- Service discovery - Automatic DNS for services
Enterprise Features
SeaGit provides production-ready EKS clusters with automated setup and enterprise-grade features out of the box:
Node Group Management
- ✅ On-demand node groups - Reliable compute for production workloads
- ✅ Spot node groups - Up to 90% cost savings with correct override structure
- ✅ Fast node provisioning - Nodes reach Ready state in ~60 seconds
- ✅ Instance refresh - Rolling updates for node groups with zero downtime
Networking & Security
- ✅ VPC CNI initialization - Automatic setup with proper ready states
- ✅ IAM policies - Worker, ECR, CNI, and SSM policies attached automatically
- ✅ Access entries - Automated IAM to Kubernetes RBAC mapping
Auto-scaling & Reliability
- ✅ Cluster Autoscaler - Automatic node group discovery and scaling
- ✅ Node Termination Handler - Monitors instances and raises resiliency bar of your clusters
- ✅ Scheduled terminations - Enable through action rules to cut costs by 30% or more
💡 Cost Optimization Tip
Combine spot instances with scheduled terminations to achieve at least 30% cost reduction on non-production environments while maintaining reliability through Node Termination Handler.
Creating a Cluster
Prerequisites
- Network/VPC created (see Networks guide)
- AWS provider configured (see Providers guide)
Step 1: Navigate to Clusters
- Go to Organization → Clusters
- Click "+ Create Cluster"
Step 2: Select Network
Choose the VPC network where your cluster will be deployed.
Step 3: Configure Node Groups
On-Demand Nodes:
- Instance type: t3.medium, t3.large, t3.xlarge
- Min nodes: 2 (high availability)
- Max nodes: 10 (auto-scaling limit)
- Disk size: 20-100 GB
Spot Instances (Optional):
- Up to 90% cost savings
- Can be interrupted with 2-minute warning
- Best for: dev, test, batch processing
Step 4: Install Add-ons
SeaGit supports 12 cluster add-ons. Recommended for production:
- ALB Controller - AWS Load Balancer integration
- Cert-Manager - Automatic TLS certificates
- External DNS - Auto DNS record management
- Prometheus - Metrics and monitoring
Step 5: Create
Creation Time: 15-20 minutes
Cluster Add-ons
1. AWS Load Balancer Controller (ALB)
Automatically provisions AWS Application Load Balancers for ingress resources.
2. NGINX Ingress Controller
Alternative ingress controller with more flexibility than ALB.
3. Cert-Manager
Automates TLS certificate issuance and renewal using Let's Encrypt.
4. External DNS
Automatically creates DNS records in Route53, Cloudflare, or PowerDNS. It watches your ingresses and keeps every record pointed at the load balancer that is currently live — which means your app URLs keep working even if the load balancer behind them is replaced (see DNS & Domains).
5. ArgoCD
GitOps continuous delivery tool for Kubernetes.
6. Prometheus
Monitoring and alerting toolkit.
kubectl Access
# Update kubeconfig aws eks update-kubeconfig --name cluster-name --region us-east-1 # Test connection kubectl get nodes # View pods kubectl get pods -A
Stopping & Starting a Cluster
A cluster can be stopped when you don't need it — most commonly a development cluster outside working hours, on a schedule set with Action Rules. Stopping is reversible; terminating is not.
Stopping
- Every node group scales to zero and your workloads stop.
- The cluster's load balancers are released, so you are not billed for idle load balancers while it sits stopped.
- Everything else is preserved: cluster and node group configuration, domains, DNS records, TLS certificates, and persistent volumes.
Starting
- Node groups scale back up to their configured size.
- The ingress controller rebuilds the load balancer automatically, and external-dns re-points your DNS records at it.
- Your app URLs are unchanged. Allow a few minutes for the load balancer to come up before they answer.
⚠️ Don't point external DNS at the raw load balancer hostname
A rebuilt load balancer gets a new *.elb.amazonaws.com hostname. Always CNAME your own domains to your SeaGit deployment URL, which is stable. See DNS & Domains.
A stopped cluster still bills for the managed control plane, the NAT gateway, and any persistent volumes. Terminate the cluster to remove those as well.
Cost Optimization
- Use spot instances for non-production workloads
- Right-size node instance types
- Use cluster autoscaler to scale down when idle
- Stop clusters when not in use using action rules