EKS : concepts et premier cluster
À la fin de ce tutoriel, vous comprendrez le control plane EKS et le data plane (managed node groups / Fargate), comparerez ECS vs EKS (examen SA), créerez un cluster minimal
lab-eksavec eksctl (profil Fargate ou 1 nœudt3.small), configurerzkubectl, déploierez un Deployment nginx + Service ClusterIP, puis supprimerez le cluster — enca-central-1, profillab.Niveau : Intermédiaire / Avancé · Temps estimé : 70–90 min · Versions testées : EKS 1.31+ / 2026, eksctl, kubectl, AWS CLI v2 · Dernière vérification : 2026-09-10 · Region :
ca-central-1Slug draft :
aws-eks-concepts· Slug live :aws-eks· Série : AWS Solutions Architect · Mot-clé SEO : AWS EKS tutorielPublish : HOLD · Absorbe / enrichit : live EN thin
/aws-eks/(concepts cluster, node groups, autoscaler — hors scope détaillé ici)← Précédent : ECS Fargate · → Suivant : EKS nodes & déploiement · Hub : Démarrer avec AWS
Prérequis
- Profil AWS CLI
labavec droits EKS, EC2, IAM, CloudFormation (eksctl crée des stacks), VPC - Outils : AWS CLI v2, kubectl, eksctl (installés localement)
- Notions conteneurs (ECS Fargate) et VPC / Security Groups
- Budget critique : le control plane EKS coûte environ 0,10 USD/heure (+ Fargate ou EC2). Lab court — delete obligatoire dès la vérif OK
- Aucun secret dans les manifests ; profil
labuniquement
export AWS_PROFILE=lab
export AWS_DEFAULT_REGION=ca-central-1
aws sts get-caller-identity
kubectl version --client
eksctl version
Vérifiez l’identité lab — jamais un compte de production.
Ce que nous allons construire
kubectl / API clients
│
▼
┌─────────────────────────────┐
│ EKS control plane (géré) │ ≈ 0,10 USD/h — toujours facturé
│ API Server · etcd · … │
└─────────────┬───────────────┘
│ VPC CNI / OIDC (IRSA)
▼
┌─────────────────────────────┐
│ Data plane lab-eks │
│ Fargate profile OU │
│ 1 managed node t3.small │
│ └── Pod nginx (1 replica) │
│ Service ClusterIP │
└─────────────────────────────┘
(Schéma — alt : « Clients kubectl vers control plane EKS géré, data plane Fargate ou nœud t3.small avec Pod nginx et Service ClusterIP ».)
Pas d’Ingress / ALB Controller ici (tutoriel #30). Objectif : concepts + premier cluster minimal, pas une plateforme de prod.
Contenu d’origine conservé (live aws-eks)
Le live aws-eks listait un parcours long (VPC multi-AZ, Spot node groups, Cluster Autoscaler, CloudWatch, Dashboard, EBS/EFS CSI). On conserve la feuille de route ; ce #28 reste concepts + cluster minimal (ca-central-1, Fargate ou 1× t3.small). Nodes/IRSA → aws-eks-nodes-deploy ; Ingress → aws-eks-ingress ; stockage → EBS / EFS. Ne pas mélanger avec eu-west-3 du stub EN.
Étape 1 — Concepts EKS à maîtriser
| Concept | Rôle |
|---|---|
| Control plane | API Server, etcd, controllers — géré par AWS, facturé ~0,10 USD/h par cluster |
| Data plane | Où tournent vos Pods : managed node groups (EC2) ou Fargate profiles |
| Managed node group | Auto Scaling d’instances EC2 joinées au cluster (AMI EKS) |
| Fargate profile | Sélecteurs de namespace/labels → Pods sans EC2 à patcher |
| VPC CNI | Plugin réseau AWS : chaque Pod obtient une IP VPC (ENI) |
| OIDC / IRSA | Le cluster expose un issuer OIDC ; un ServiceAccount peut assume un rôle IAM (IRSA) — aperçu ici, détail dans #29 |
EKS = Kubernetes standard + intégrations AWS : vous gardez kubectl / Deployments ; AWS opère le control plane et les add-ons (VPC CNI, CoreDNS, kube-proxy).
Étape 2 — ECS vs EKS (examen Solutions Architect)
| Critère | ECS | EKS |
|---|---|---|
| API / objets | Tasks, services, task definitions | Pods, Deployments, Services, Ingress… |
| Portabilité | Écosystème AWS | Standard Kubernetes (multi-cloud tooling) |
| Coût fixe | Pas de control plane à l’heure | Control plane ≈ 0,10 USD/h même à vide |
| Compute | EC2 ou Fargate | Managed nodes, self-managed, ou Fargate |
| Courbe | Plus simple pour équipes AWS-only | Plus riche (Helm, operators, CRD) |
| Quand choisir | Microservices AWS-native, moins d’ops K8s | Standard K8s, portabilité, écosystème CNCF |
Pour l’examen SA : ECS orchestre des tasks ; EKS orchestre des Pods. Fargate existe des deux côtés. Si vous n’avez pas besoin de l’API Kubernetes, ECS Fargate est souvent moins cher (pas de control plane EKS).
Étape 3 — kubectl + aws eks update-kubeconfig
kubectl parle à l’API Server. Après création du cluster, AWS CLI écrit le contexte kubeconfig :
aws eks update-kubeconfig
--name lab-eks
--region ca-central-1
--profile lab
Cela ajoute un contexte arn:aws:eks:ca-central-1:…:cluster/lab-eks. L’auth utilise en général le profil IAM (plugin aws eks get-token). Vérifiez :
kubectl config current-context
kubectl get --raw='/readyz?verbose' | head
Sans cluster encore, update-kubeconfig échouera — normal ; exécutez-le après l’étape 4.
Étape 4 — Créer le cluster minimal avec eksctl
Recommandation lab : profil Fargate (pas d’EC2 à gérer) ou un seul managed node t3.small. Ci-dessous la variante Fargate-only (souvent la plus simple pour un lab concepts).
eksctl create cluster
--name lab-eks
--region ca-central-1
--version 1.31
--fargate
--without-nodegroup
--fargate: crée un Fargate profile (souvent surdefault/kube-system)--without-nodegroup: pas de groupe EC2 — évite unt3oublié- Durée typique : 15–20 min (CloudFormation + control plane)
Alternative 1 nœud EC2 (si vous préférez voir des Nodes « Ready » classiques) :
eksctl create cluster
--name lab-eks
--region ca-central-1
--version 1.31
--nodegroup-name ng-lab
--node-type t3.small
--nodes 1
--nodes-min 1
--nodes-max 1
--managed
Un seul t3.small limite le data plane ; le control plane reste facturé dans les deux cas. Nommez toujours lab-eks pour coller au nettoyage.
Puis (après création) :
aws eks update-kubeconfig --name lab-eks --region ca-central-1 --profile lab
Étape 5 — Vérifier nœuds et services système
kubectl get nodes
kubectl get svc -A
kubectl get pods -n kube-system
- Fargate : les « nodes » Fargate apparaissent quand des Pods y sont planifiés ;
kube-systempeut montrer CoreDNS sur Fargate - Managed node : 1 nœud
Ready, version kubelet alignée sur le control plane - Services :
kubernetes(ClusterIP) dansdefault; CoreDNS enkube-system
Si kubectl renvoie Unauthorized / timeout : mauvais profil, mauvais contexte, ou SG / endpoint privé mal configuré (eksctl default = endpoint public — OK pour lab).
Étape 6 — Déployer nginx (1 replica) + Service ClusterIP
Manifests sans secret — image publique :
kubectl create deployment lab-nginx --image=nginx:alpine --replicas=1
kubectl expose deployment lab-nginx --port=80 --target-port=80 --name=lab-nginx --type=ClusterIP
Ou YAML équivalent :
apiVersion: apps/v1
kind: Deployment
metadata:
name: lab-nginx
spec:
replicas: 1
selector:
matchLabels:
app: lab-nginx
template:
metadata:
labels:
app: lab-nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: lab-nginx
spec:
type: ClusterIP
selector:
app: lab-nginx
ports:
- port: 80
targetPort: 80
kubectl apply -f lab-nginx.yaml
kubectl get deploy,po,svc -l app=lab-nginx
kubectl rollout status deployment/lab-nginx
Test interne (pas d’Ingress — #30) :
kubectl run curl-tmp --rm -it --restart=Never --image=curlimages/curl --
curl -sS -o /dev/null -w "%{http_code}n" http://lab-nginx/
Attendu : HTTP 200. ClusterIP = joignable dans le cluster seulement.
Vérification
kubectl get nodes
kubectl get deploy lab-nginx
kubectl get svc lab-nginx
kubectl get pods -l app=lab-nginx -o wide
Checklist : contexte lab-eks · Deployment 1/1 · Pod Running · Service ClusterIP · plan de delete prêt.
Nettoyage (obligatoire) — coûts control plane
Le control plane EKS facture ≈ 0,10 USD/h tant que le cluster existe, même sans Pod. Coupez immédiatement après la vérif :
eksctl delete cluster --name lab-eks --region ca-central-1 --wait
Cela retire le stack CloudFormation (control plane, Fargate / node groups, rôles eksctl). Alt. : console EKS → Delete, ou stack eksctl-lab-eks-*.
Vérifiez ensuite :
aws eks list-clusters --region ca-central-1
aws cloudformation list-stacks --region ca-central-1
--query "StackSummaries[?contains(StackName,'lab-eks') && StackStatus!='DELETE_COMPLETE']"
Insistez : un cluster oublié une nuit ≈ 2,4 USD (control plane seul) + Fargate/EC2. Alarme billing + lab court = non négociable.
Erreurs fréquentes
| Symptôme | Cause | Correction |
|---|---|---|
eksctl timeout / stack ROLLBACK |
Quotas VPC / IAM / region | Relire events CloudFormation ; region ca-central-1 ; droits lab |
kubectl no matches / wrong context |
kubeconfig pas à jour | aws eks update-kubeconfig --name lab-eks … |
Pod Pending (Fargate) |
Pas de Fargate profile pour le namespace | Profil sur default ; ou créer un profile eksctl |
Pod Pending (node) |
Pas de capacité / taints | Vérifier kubectl get nodes ; 1× t3.small Ready |
| Coût surprise | Cluster non détruit | eksctl delete cluster tout de suite |
| Tentative Ingress / Helm | Hors scope #28 | Reporter à #29 / #30 |
Quiz (5 questions)
1. Le coût fixe caractéristique d’EKS (même sans charge) est surtout :
– A. Gratuit tant qu’il n’y a pas de Pod
– B. Le control plane ≈ 0,10 USD/heure
– C. Uniquement le prix d’un ALB
2. Pour un lab concepts peu cher sans EC2 à patcher, on privilégie :
– A. 10 nœuds m5.large
– B. Fargate profile (ou 1 managed node t3.small max)
– C. Un Ingress ALB dès le premier lab
3. ECS vs EKS pour l’examen SA :
– A. ECS et EKS utilisent strictement les mêmes objets (Pods)
– B. ECS → tasks/services ; EKS → API Kubernetes (Pods, Deployments…)
– C. EKS n’a jamais de control plane facturé
4. Après eksctl create cluster, pour parler à l’API Server on exécute surtout :
– A. docker login uniquement
– B. aws eks update-kubeconfig --name lab-eks --region ca-central-1
– C. terraform destroy
5. Fin de lab correcte pour éviter ~2,4 USD/nuit de control plane :
– A. Arrêter un seul Pod nginx
– B. eksctl delete cluster --name lab-eks --region ca-central-1 (et vérifier stacks CFN)
– C. Laisser le cluster une semaine « pour le cache »
Réponses : 1‑B · 2‑B · 3‑B · 4‑B · 5‑B
Pour aller plus loin
- Amazon EKS User Guide
- eksctl — creating and managing clusters
- EKS pricing (control plane + compute)
- Suite série : EKS : nœuds, IAM et déploiement — IRSA, node groups, app plus complète
Maillage série AWS (P1)
| ← Précédent | ECS : service Fargate simple |
| → Suivant | EKS : nœuds, IAM et déploiement app |
| Aussi | Démarrer avec AWS · EKS Ingress |
Retour parcours AWS — hub de la série et leçons sœurs.



