카테고리 없음

기존 EKS 클러스터를 유지하고 새로운 EKS 클러스터를 생성하는 방법: 단계별 가이드

idea9329 2024. 10. 10. 16:51
반응형

 

AWS EKS 클러스터를 업그레이드하거나 확장할 때, 기존 클러스터를 그대로 두고 새로운 EKS 클러스터를 생성하는 방식은 여러 가지 장점이 있습니다. 이 방법을 통해 기존 클러스터가 운영 중인 상태에서 새로운 클러스터를 설정하고, 단계적으로 애플리케이션을 마이그레이션하거나 새로운 기능을 테스트할 수 있습니다.

이 글에서는 기존 EKS 클러스터를 유지하면서 새로운 EKS 클러스터를 생성하는 방법을 단계별로 설명하겠습니다.


1. 새로운 EKS 클러스터 생성 준비

1.1 클러스터 설계 및 리전 선택

새 클러스터의 용도와 목표에 맞는 설계가 필요합니다. 여러 가지 요소를 고려해야 합니다:

  • 클러스터가 실행될 AWS 리전을 선택합니다.
  • 기존 클러스터와 다른 리전을 선택할 수 있으며, 같은 리전에 생성할 수도 있습니다.
  • 노드 그룹을 Managed Node Group으로 할지, Self-managed Node Group을 선택할지 결정합니다.

1.2 새로운 VPC 설정 (필요 시)

새 클러스터를 기존 클러스터와 독립적으로 운영하려면 새로운 VPC를 설정하는 것이 좋습니다. VPC를 새로 설정하지 않으면 기존 클러스터와 네트워크 자원을 공유하게 되며, 별도의 VPC를 사용하면 완전히 격리된 환경을 만들 수 있습니다.

VPC 생성 방법:
1. AWS Management Console에서 VPC 서비스로 이동합니다.
2. Create VPC 버튼을 클릭하여 새 VPC와 서브넷을 생성합니다.


2. 새로운 EKS 클러스터 생성

2.1 AWS CLI로 EKS 클러스터 생성

AWS CLI를 사용하여 새로운 EKS 클러스터를 생성할 수 있습니다. 먼저, AWS CLI가 최신 버전인지 확인하고 새 클러스터를 생성하는 명령어를 실행합니다.

  1. AWS CLI 최신 버전 확인:
  2. aws --version
  3. 새 클러스터 생성:
    다음 명령을 사용해 새로운 EKS 클러스터를 생성합니다. 리전, VPC 서브넷 ID, 클러스터 이름 등을 환경에 맞게 설정하세요.
    • --name: 클러스터 이름
    • --region: 클러스터를 생성할 AWS 리전
    • --version: Kubernetes 버전 (예: 1.31)
    • --role-arn: EKS 클러스터에 부여할 IAM 역할
    • --resources-vpc-config: VPC 서브넷 정보 (여러 서브넷이 필요한 경우 콤마로 구분)
  4. aws eks create-cluster \ --name new-cluster-name \ --region us-west-2 \ --version 1.31 \ --role-arn arn:aws:iam::<account-id>:role/EKSClusterRole \ --resources-vpc-config subnetIds=subnet-12345abcde,subnet-67890fghij
  5. 클러스터 상태 확인:
    클러스터 생성이 완료되면 상태를 확인하여 클러스터가 정상적으로 실행 중인지 확인합니다.
  6. aws eks describe-cluster --name new-cluster-name --query "cluster.status"

3. 새로운 노드 그룹 생성

클러스터가 생성되면 노드 그룹을 추가해야 합니다. EKS 클러스터는 노드 그룹을 통해 실제 워커 노드가 실행되며, 이 노드들이 Kubernetes 워크로드를 처리합니다.

3.1 Managed Node Group 생성

Managed Node Group은 AWS에서 관리하는 워커 노드로, 자동으로 패치 및 업데이트됩니다.

  1. Managed Node Group 생성:
    • --cluster-name: 클러스터 이름
    • --nodegroup-name: 노드 그룹 이름
    • --subnets: 사용할 서브넷 ID
    • --instance-types: EC2 인스턴스 타입 (예: t3.medium)
    • --scaling-config: 최소, 최대, 원하는 노드 수 설정
    • --node-role: 워커 노드에 부여할 IAM 역할
  2. aws eks create-nodegroup \ --cluster-name new-cluster-name \ --nodegroup-name new-node-group \ --subnets subnet-12345abcde subnet-67890fghij \ --instance-types t3.medium \ --scaling-config minSize=2,maxSize=5,desiredSize=3 \ --ami-type AL2_x86_64 \ --node-role arn:aws:iam::<account-id>:role/NodeInstanceRole
  3. 노드 그룹 상태 확인:
    노드 그룹이 생성된 후에는 상태를 확인하여 노드가 정상적으로 생성되었는지 확인합니다.
  4. aws eks describe-nodegroup --cluster-name new-cluster-name --nodegroup-name new-node-group --query "nodegroup.status"

3.2 수동 노드 그룹 생성 (Self-managed Node Group)

수동으로 노드를 관리하려면 EC2 인스턴스를 직접 설정하고, 새 클러스터에 등록해야 합니다. 아래는 수동 노드를 설정하는 일반적인 과정입니다.

  1. 최신 EKS AMI를 찾아 EC2 인스턴스를 실행합니다.
  2. aws ssm get-parameters --names /aws/service/eks/optimized-ami/1.31/amazon-linux-2/recommended/image_id --region <your-region> --query 'Parameters[0].[Value]' --output text
  3. EC2 인스턴스에 필요한 역할과 보안 그룹을 설정합니다.
  4. 인스턴스가 시작되면, 새 EKS 클러스터에 노드를 등록합니다.

4. 애플리케이션 마이그레이션

새 클러스터를 만들었다면 기존 클러스터에서 실행 중인 애플리케이션을 새 클러스터로 마이그레이션할 수 있습니다. 이를 위해 다음 단계들을 따릅니다.

4.1 애플리케이션 상태 백업

  1. 기존 클러스터에서 애플리케이션 구성 및 리소스 상태를 백업합니다.
    kubectl get all --all-namespaces -o yaml > existing-cluster-backup.yaml

4.2 새 클러스터로 애플리케이션 마이그레이션

  1. 새 클러스터에 대한 kubeconfig를 설정하여 연결합니다.
  2. aws eks update-kubeconfig --name new-cluster-name --region us-west-2
  3. 백업한 애플리케이션을 새 클러스터에 적용합니다.
  4. kubectl apply -f existing-cluster-backup.yaml

5. 클러스터 테스트 및 모니터링

새 클러스터가 정상적으로 작동하는지 확인하기 위해 필요한 테스트를 수행하세요.

  1. 노드 상태 확인:
  2. kubectl get nodes
  3. 파드 상태 확인:
  4. kubectl get pods --all-namespaces
  5. 부하 테스트: 성능이 예상대로 나오는지 부하 테스트를 수행하여 새 클러스터가 제대로 설정되었는지 확인합니다.

결론

AWS EKS에서 기존 클러스터를 유지하면서 새로운 클러스터를 생성하는 방법은 매우 유용합니다. 기존 클러스터의 운영에 영향을 주지 않고 새로운 환경을 설정한 후, 점진적으로 애플리케이션을 이전하거나 테스트할 수 있기 때문입니다. 이 가이드에서 설명한 절차를 따르시면, 안전하게 새 클러스터를 생성하고 운영할 수 있을 것입니다.

이 글이 도움이 되었다면 공유해 주세요! 더 많은 AWS 관련 팁을 위해 블로그를 구독하세요.


이 가이드를 통해 AWS EKS 클러스터를 업그레이드하거나 새로운 클러스터를 설정하는 방법을 쉽게 이해하고 실무에 적용할 수 있습니다.

반응형