반응형
AWS EKS는 Kubernetes 클러스터를 쉽게 생성, 관리, 확장할 수 있도록 지원하는 완전 관리형 서비스입니다. 다음은 EKS를 학습하고 구성, 운영, 트러블슈팅하는 단계별 가이드입니다.
1단계: EKS 개념 이해
1. Kubernetes 기본 이해
- Kubernetes의 기본 개념:
- Pod: Kubernetes에서 배포 가능한 가장 작은 단위.
- Node: Pod를 실행하는 물리적/가상 머신.
- Cluster: 여러 Node로 구성된 Kubernetes 실행 환경.
- 핵심 요소:
- Control Plane (API Server, Scheduler, etcd 등)
- Worker Node (Pod 실행)
2. EKS의 역할
- AWS에서 관리형 Kubernetes 클러스터를 제공.
- Control Plane은 AWS가 관리하고, Worker Node는 사용자가 관리하거나 Fargate로 자동화 가능.
- EKS와 통합 가능한 AWS 서비스:
- VPC, IAM, ALB, CloudWatch, S3 등.
2단계: EKS 구성
1. 사전 준비
- AWS CLI 설치 및 구성:
aws configure
- kubectl 설치:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/bin/
- eksctl 설치:
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp sudo mv /tmp/eksctl /usr/local/bin
2. EKS 클러스터 생성
- eksctl을 사용하여 클러스터 생성:
eksctl create cluster --name my-cluster --region ap-northeast-2 --nodes 2
- 생성된 클러스터 확인:
kubectl get nodes
3. 구성 요소 추가
- IAM 역할 설정:
EKS와 노드 간의 권한을 IAM으로 설정. - Networking (VPC, Subnet, Security Group):
클러스터에 필요한 네트워킹 구성.
3단계: EKS 운영
1. 애플리케이션 배포
- 샘플 애플리케이션 배포:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.21
kubectl apply -f nginx-deployment.yaml kubectl get pods
2. Autoscaling 설정
- Horizontal Pod Autoscaler(HPA) 설정:
kubectl autoscale deployment nginx-deployment --cpu-percent=50 --min=1 --max=10
3. AWS 서비스 통합
- ALB를 통한 로드 밸런싱:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-ingress annotations: alb.ingress.kubernetes.io/scheme: internet-facing spec: rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: nginx-service port: number: 80
kubectl apply -f ingress.yaml
4단계: 트러블슈팅
1. 클러스터 상태 확인
- 노드 상태 확인:
kubectl get nodes kubectl describe node <node-name>
- Pod 상태 확인:
kubectl get pods --all-namespaces kubectl describe pod <pod-name>
2. 로그 분석
- Pod 로그 확인:
kubectl logs <pod-name>
- EKS Control Plane 로그는 CloudWatch에서 확인 가능:
aws logs get-log-events --log-group-name /aws/eks/my-cluster/cluster
3. 네트워크 문제 해결
- DNS 확인:
CoreDNS Pod 상태 확인 및 재시작: - kubectl get pods -n kube-system | grep coredns kubectl rollout restart deployment coredns -n kube-system
- VPC/Subnet 구성 확인:
노드와 Control Plane이 동일한 VPC/Subnet에 있는지 확인.
4. IAM 권한 문제
- 서비스 계정 권한 확인:
kubectl describe sa <service-account-name>
5단계: EKS 학습 심화
1. Helm을 이용한 패키지 관리
- Helm 설치:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
- Helm 차트 설치:
helm repo add bitnami https://charts.bitnami.com/bitnami helm install my-release bitnami/nginx
2. 모니터링 및 로깅
- CloudWatch Container Insights 설정.
- Prometheus와 Grafana 설치:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm install prometheus prometheus-community/prometheus
결론
EKS는 Kubernetes 클러스터의 복잡한 관리 작업을 AWS가 처리해주는 서비스입니다. 초기에는 구성과 배포를 이해하고, 점진적으로 운영 및 트러블슈팅 능력을 키워야 합니다. 각 단계에서 실습을 통해 익숙해지는 것이 중요합니다. 추가적인 도움이 필요하면 언제든 요청해주세요!
반응형