카테고리 없음

AWS EKS (Elastic Kubernetes Service) 단계별 학습 가이드

idea9329 2024. 11. 18. 14:54
반응형

 

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가 처리해주는 서비스입니다. 초기에는 구성과 배포를 이해하고, 점진적으로 운영 및 트러블슈팅 능력을 키워야 합니다. 각 단계에서 실습을 통해 익숙해지는 것이 중요합니다. 추가적인 도움이 필요하면 언제든 요청해주세요!

반응형