Co to jest Amazon EKS?
Amazon Elastic Kubernetes Service (Amazon EKS) to w pełni zarządzana usługa platformy Kubernetes w chmurze AWS (Amazon Web Services). Umożliwia łatwe uruchamianie, skalowanie i utrzymanie aplikacji kontenerowych bez konieczności samodzielnego zarządzania infrastrukturą kontrolną klastra. EKS łączy elastyczność chmury z pełną zgodnością ze standardowym Kubernetesem, dzięki czemu aplikacje można przenosić między środowiskami AWS, lokalnymi centrami danych i innymi chmurami.
W artykule znajdziesz omówienie architektury Amazon EKS, kluczowych funkcji, metod wdrożenia i skalowania, zasad bezpieczeństwa oraz wskazówki dotyczące optymalizacji kosztów i integracji z usługami AWS. Na końcu przedstawiono, jak Black Rack wspiera firmy w planowaniu, konfiguracji i utrzymaniu środowisk EKS.
Co to jest Amazon EKS?
Amazon EKS to zarządzany Kubernetes, który automatyzuje utrzymanie i skalowanie klastra. AWS odpowiada za infrastrukturę kontrolną – czyli serwery API, bazę danych etcd i procesy zarządzające stanem klastra. Użytkownik skupia się wyłącznie na wdrażaniu i obsłudze aplikacji.
- Zarządzana płaszczyzna kontrolna – AWS zapewnia dostępność i bezpieczeństwo w wielu strefach (AZ).
- Kompatybilność z Kubernetes – pełna zgodność z API i narzędziami ekosystemu open-source.
- Elastyczność wdrożeń – uruchamianie aplikacji w chmurze, lokalnie lub w modelu hybrydowym.
Jak działa Amazon EKS?
Płaszczyzna kontrolna Kubernetes
Płaszczyzna kontrolna (ang. control plane) jest utrzymywana przez AWS. To ona odpowiada za planowanie pracy podów, reagowanie na zdarzenia i synchronizację komponentów klastra. AWS automatycznie aktualizuje i zabezpiecza tę warstwę, zapewniając wysoką dostępność.
Węzły robocze EC2 i bezserwerowe Fargate
Węzły robocze (worker nodes) można uruchamiać na instancjach Amazon EC2 lub w modelu bezserwerowym AWS Fargate. EC2 daje pełną kontrolę nad konfiguracją maszyn, natomiast Fargate eliminuje konieczność zarządzania serwerami i automatycznie dopasowuje zasoby do obciążenia.
Sieć klastra i Amazon VPC
Każdy klaster EKS działa w ramach Amazon Virtual Private Cloud (VPC), co zapewnia izolację sieciową i kontrolę nad ruchem. Integracja z Elastic Load Balancer (ALB/NLB) umożliwia równoważenie obciążenia, a VPC Lattice – bezpieczną komunikację między usługami.
Dodatki EKS i Amazon EKS Distro
EKS Add-ons to gotowe komponenty, takie jak CoreDNS czy Amazon VPC CNI, które można łatwo aktualizować bezpośrednio z konsoli AWS. Z kolei Amazon EKS Distro to dystrybucja Kubernetes, pozwalająca uruchamiać zgodne środowiska lokalne (on-premises).
Jak rozpocząć pracę z Amazon EKS?
Tworzenie ról i uprawnień IAM
Na początku należy skonfigurować Identity and Access Management (IAM) – system zarządzania tożsamością i dostępem w AWS. Umożliwia on precyzyjne określenie, kto i do czego ma dostęp w klastrze EKS.
Użycie eksctl do utworzenia klastra
Narzędzie eksctl to najprostszy sposób na utworzenie klastra EKS. Pozwala w kilku komendach zdefiniować parametry sieci, węzły oraz integracje z innymi usługami AWS.
Konfiguracja grup węzłów i Fargate
Amazon EKS umożliwia wybór pomiędzy zarządzanymi grupami węzłów (EC2 Managed Node Groups) a profilem Fargate. Oba podejścia można łączyć, aby optymalnie dopasować koszt i wydajność.
Jak skalować klastry w Amazon EKS?
Auto Scaling Groups i Karpenter
Karpenter to nowoczesny mechanizm automatycznego skalowania zasobów, który zastępuje klasyczne Auto Scaling Groups. Dynamicznie dobiera typy instancji EC2 w zależności od obciążenia, minimalizując koszty.
Autoskalowanie podów (HPA)
Horizontal Pod Autoscaler (HPA) zwiększa lub zmniejsza liczbę podów w oparciu o rzeczywiste zużycie zasobów – CPU, pamięci lub metryk aplikacyjnych.
Wykorzystanie instancji Spot i Graviton2
Instancje Spot pozwalają znacząco obniżyć koszty, a procesory AWS Graviton2 (ARM) zapewniają wysoką wydajność przy mniejszym poborze energii. Oba rozwiązania doskonale współpracują z Karpenterem.
Jak zabezpieczyć klastry Amazon EKS?
Integracja IAM z RBAC Kubernetes
System RBAC (Role-Based Access Control) w Kubernetes można zintegrować z uprawnieniami AWS IAM, co umożliwia nadawanie dostępów na poziomie kont użytkowników lub aplikacji.
Polityki sieciowe i izolacja VPC
Bezpieczeństwo sieci można zwiększyć poprzez polityki NetworkPolicies oraz izolację ruchu w ramach VPC. W połączeniu z Security Groups zapewnia to kontrolę komunikacji między usługami.
Szyfrowanie i zarządzanie tajemnicami
Amazon EKS wspiera AWS Key Management Service (KMS) do szyfrowania danych w spoczynku i w tranzycie. Hasła, klucze i certyfikaty mogą być bezpiecznie przechowywane w AWS Secrets Manager.
Jak monitorować i analizować działanie Amazon EKS?
Metryki i dzienniki w AWS CloudWatch
CloudWatch zbiera metryki wydajności i logi z klastra EKS. Dzięki niemu można monitorować obciążenie, ustawiać alarmy i analizować błędy aplikacji.
Audyt operacji z AWS CloudTrail
CloudTrail zapisuje wszystkie operacje API wykonywane w klastrze, co ułatwia kontrolę zgodności i bezpieczeństwa.
Obserwowalność za pomocą dodatków EKS
Integracje z narzędziami open source, takimi jak Prometheus czy Grafana, zapewniają wgląd w działanie aplikacji i infrastruktury.
Jak optymalizować koszty na Amazon EKS?
Monitorowanie kosztów z Kubecost
Kubecost analizuje wydatki na poziomie przestrzeni nazw (namespace), usług i zespołów, umożliwiając rozliczanie kosztów między działami.
Optymalizacja zasobów
Regularne przeglądy konfiguracji, wykorzystanie instancji Spot i Graviton2 oraz automatyzacja z Karpenterem pozwalają ograniczyć koszty nawet o 50%.
Jak migrować i wdrażać aplikacje na Amazon EKS?
Firmy mogą przenosić aplikacje do EKS metodą lift-and-shift (bez zmian) lub replatforming – modernizując je do architektury mikroserwisowej. Ciągła integracja (CI) i dostarczanie (CD) oparte o narzędzia takie jak Argo CD lub Jenkins zapewniają szybkie i bezpieczne wdrożenia.
Klastry hybrydowe i lokalne z Amazon EKS
Amazon EKS Anywhere umożliwia uruchamianie klastrów Kubernetes w środowiskach lokalnych (np. VMware, bare metal), zachowując spójność z EKS w chmurze. Z kolei AWS Outposts pozwala na uruchomienie infrastruktury AWS w centrum danych klienta, łącząc zalety lokalnej kontroli z integracją z chmurą.
Amazon EKS vs Amazon ECS (Amazon Elastic Container) – szybkie porównanie
| Aspekt | Amazon EKS (Kubernetes) | Amazon ECS (orchestrator AWS) |
| Silnik orkiestracji | Upstream Kubernetes (zgodny ze standardem CNCF) | Natywny orchestrator AWS |
| Płaszczyzna kontrolna | Zarządzana przez AWS (HA, aktualizacje, bezpieczeństwo) | Zarządzana przez AWS (bez serwerów do utrzymania) |
| Portowalność | Wysoka – ten sam YAML działa też poza AWS | Niska/średnia – definicje zadań i usług są specyficzne dla AWS |
| Model definicji | Manifesty Kubernetes (Deployment, Service, HPA, itp.) | Task Definition + Service (JSON), integracje z ALB/NLB |
| Tryby uruchamiania | EC2, Fargate (pods bezserwerowe) | EC2, Fargate (zadania/serwisy bezserwerowe) |
| Autoskalowanie | HPA/VPA, Karpenter, Managed Node Groups, Spot/Graviton | Target Tracking/Step/Custom scaling dla usług, Capacity Providers |
| Sieć i LB | Amazon VPC CNI, Service/Ingress, AWS Load Balancer Controller (ALB/NLB) | ALB/NLB integracja natywna, proste mapowanie portów |
| Uczenie się/operacje | Wyższa złożoność (K8s praca dnia codziennego) | Niższa złożoność (bardziej „klikane” i natywne dla AWS) |
| Ekosystem | Bogaty ekosystem CNCF (Helm, Argo, Istio, itp.) | Silne integracje AWS, mniejsza potrzeba dodatkowych narzędzi |
| Przypadki użycia | Mikroserwisy, platformy danych, ML/AI, multi-cloud/hybryda | Proste/mid-scale usługi kontenerowe ściśle na AWS |
| Koszty | Opłata za EKS control plane + compute; elastyczne oszczędności (Spot/Graviton) | Brak opłaty za „control plane” ECS; płacisz za compute |
Przykłady manifestów Kubernetes (EKS)
1) Deployment + Service (NodePort/ALB przez Ingress)
Prosty serwis HTTP z obrazem w Amazon ECR. Zmienna <ACCOUNT_ID> i <REGION> do podmiany.
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-demo
labels:
app: web-demo
spec:
replicas: 3
selector:
matchLabels:
app: web-demo
template:
metadata:
labels:
app: web-demo
spec:
containers:
- name: web
image: <ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/web-demo:1.0.0
ports:
- containerPort: 8080
env:
- name: ENV
value: "prod"
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"
---
apiVersion: v1
kind: Service
metadata:
name: web-demo-svc
labels:
app: web-demo
spec:
selector:
app: web-demo
ports:
- port: 80
targetPort: 8080
type: ClusterIP
Ingress z AWS Load Balancer Controller (ALB)
Wymaga zainstalowanego AWS Load Balancer Controller i adnotacji dla ALB.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-demo-ing
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-demo-svc
port:
number: 80
2) Horizontal Pod Autoscaler (HPA)
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: web-demo-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web-demo
minReplicas: 3
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization