카테고리 없음

Amazon EKS

idea9329 2024. 8. 27. 15:47
반응형

Amazon EKS(Amazon Elastic Kubernetes Service)를 AWS에서 설정하는 과정은 몇 가지 주요 단계를 거쳐야 합니다. 아래는 AWS에서 EKS 클러스터를 설정하는 일반적인 단계입니다.

1. Prerequisites (사전 준비)

EKS 클러스터를 설정하기 전에 다음 사항들을 준비해야 합니다.

  • AWS CLI: AWS 명령줄 인터페이스(AWS CLI)를 설치하고 설정합니다.
    pip install awscli
    aws configure
  • kubectl: Kubernetes 클러스터와 상호작용하기 위한 kubectl 명령줄 도구를 설치합니다.
    curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
    chmod +x ./kubectl
    sudo mv ./kubectl /usr/local/bin/kubectl
  • eksctl: EKS 클러스터를 쉽게 생성하고 관리할 수 있는 eksctl 도구를 설치합니다.
    curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/0.136.0/eksctl_Linux_amd64.tar.gz" | tar xz -C /tmp
    sudo mv /tmp/eksctl /usr/local/bin

2. EKS 클러스터 생성

AWS에서 EKS 클러스터를 생성하는 가장 쉬운 방법은 eksctl을 사용하는 것입니다. eksctl은 EKS 클러스터 및 관련 리소스(VPC, 서브넷, 노드 그룹 등)를 자동으로 설정해 줍니다.

eksctl create cluster \
--name my-eks-cluster \
--region us-west-2 \
--version 1.24 \
--nodegroup-name my-nodes \
--node-type t3.medium \
--nodes 3 \
--nodes-min 1 \
--nodes-max 4 \
--managed

이 명령어는 다음을 수행합니다:

  • 이름이 my-eks-cluster인 EKS 클러스터를 us-west-2 리전에서 생성합니다.
  • 1개의 노드 그룹을 생성하고, EC2 인스턴스 유형은 t3.medium으로 설정합니다.
  • 클러스터는 3개의 노드로 시작하며, 최소 1개에서 최대 4개의 노드로 자동 스케일링할 수 있습니다.
  • --managed 옵션은 AWS에서 관리하는 노드 그룹을 사용합니다.

3. 클러스터와 kubectl 연결

eksctl을 사용해 클러스터를 생성한 후, kubectl을 사용하여 클러스터와 상호작용할 수 있습니다. eksctl은 자동으로 kubectl을 위한 구성 파일을 설정해 줍니다.

다음 명령어로 클러스터 상태를 확인할 수 있습니다:

kubectl get svc

4. AWS IAM 역할 설정

EKS 클러스터에서는 AWS IAM 역할을 사용해 Kubernetes 작업자 노드의 권한을 관리합니다. EKS 클러스터 생성 시 기본적으로 필요한 IAM 역할이 자동으로 생성되지만, 특정 역할을 수동으로 생성하거나 추가 권한을 부여해야 할 때도 있습니다.

  • IAM 역할 생성: EKS 클러스터를 위한 역할을 수동으로 생성하려면, AWS Management Console에서 IAM 역할을 생성하고, AmazonEKSClusterPolicy와 같은 필요한 정책을 연결합니다.

5. 노드 그룹 추가 및 관리

EKS 클러스터에 추가적인 노드 그룹을 생성하거나 관리하려면 eksctl 또는 AWS Management Console을 사용할 수 있습니다.

  • 노드 그룹 추가:
    eksctl create nodegroup \
    --cluster my-eks-cluster \
    --name extra-nodes \
    --node-type t3.large \
    --nodes 2 \
    --nodes-min 1 \
    --nodes-max 5

이 명령어는 클러스터에 추가 노드 그룹을 생성합니다.

6. VPC 및 네트워크 설정

EKS 클러스터는 AWS VPC 안에서 동작하며, 적절한 네트워크 설정이 필요합니다. eksctl이 자동으로 VPC와 서브넷을 설정해 주지만, 수동으로 네트워크를 설정하고 싶다면 다음 사항을 고려해야 합니다:

  • VPC 및 서브넷 생성: AWS 콘솔에서 VPC 및 서브넷을 생성하고, EKS 클러스터에서 사용할 수 있도록 설정합니다.
  • 인터넷 게이트웨이 및 라우팅: 퍼블릭 서브넷을 사용하는 경우 인터넷 게이트웨이를 설정하고, 퍼블릭 트래픽을 라우팅하도록 구성해야 합니다.
  • 보안 그룹 및 네트워크 ACL: 클러스터 노드가 서로 및 외부와 통신할 수 있도록 보안 그룹 및 네트워크 ACL을 적절히 설정합니다.

7. 클러스터 모니터링 및 로깅

AWS는 EKS 클러스터의 모니터링 및 로깅 기능을 제공합니다. CloudWatch를 사용하여 클러스터와 애플리케이션의 로그를 수집하고 모니터링할 수 있습니다.

  • CloudWatch에서 로그 활성화: AWS Management Console 또는 CLI를 사용하여 CloudWatch 로그를 활성화합니다.
  • aws eks update-cluster-config \ --name my-eks-cluster \ --logging '{"clusterLogging":[{"types":["api","audit","authenticator"],"enabled":true}]}'
  • Prometheus 및 Grafana: Kubernetes 클러스터의 성능과 리소스 사용량을 모니터링하기 위해 Prometheus와 Grafana를 설치할 수 있습니다. AWS는 Amazon Managed Prometheus와 Grafana도 제공합니다.

8. 애플리케이션 배포

EKS 클러스터에 애플리케이션을 배포하려면 kubectl을 사용해 Kubernetes 리소스(예: Deployment, Service)를 정의하고 배포합니다.

  • 예시: Nginx 배포:
    kubectl create deployment nginx --image=nginx
    kubectl expose deployment nginx --port=80 --type=LoadBalancer

이 명령은 Nginx를 배포하고, 외부 트래픽을 받을 수 있는 LoadBalancer 서비스로 노출시킵니다.

9. 클러스터 관리

EKS 클러스터를 유지 관리하기 위해 다음과 같은 작업이 필요할 수 있습니다:

  • 클러스터 버전 업그레이드: Kubernetes 버전을 업그레이드하려면 AWS Management Console이나 eksctl을 통해 클러스터 및 노드 그룹의 버전을 업데이트할 수 있습니다.
  • eksctl upgrade cluster --name my-eks-cluster --version 1.25
  • 노드 그룹 확장 및 축소: 수요에 따라 노드 그룹의 크기를 조절할 수 있습니다. AWS Auto Scaling을 사용해 자동으로 조정할 수도 있습니다.

결론

Amazon EKS를 설정하는 과정은 비교적 간단하며, eksctl과 같은 도구를 사용하면 빠르게 클러스터를 생성하고 운영할 수 있습니다. 클러스터를 구성한 후에는 애플리케이션을 Kubernetes 방식으로 배포하고 관리할 수 있으며, AWS에서 제공하는 모니터링 및 로깅 기능을 활용해 클러스터 상태를 모니터링할 수 있습니다.

EKS는 AWS의 강력한 인프라를 기반으로 Kubernetes 클러스터를 운영할 수 있는 유용한 서비스입니다.

반응형