Amazon EKS 클러스터 복원 - AWS Backup

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon EKS 클러스터 복원

AWS Backup 콘솔 또는 CLI를 사용하여 EKS 클러스터 백업을 복원할 수 있습니다. EKS 백업은 EKS 클러스터 상태와 영구 볼륨 백업을 모두 포함하는 복합 복구 시점입니다.

AWS Backup 는 세분화된 네임스페이스 수준 복원을 포함하여 여러 복원 경험을 지원합니다. 복원은 비파괴적이며 대상 EKS 클러스터의 기존 Kubernetes 객체를 덮어쓰지 않습니다. 또한 복원은 대상 EKS 클러스터의 Kubernetes 버전을 덮어쓰지 않습니다.

EKS 백업은 대상 EKS 클러스터, 즉 사전 프로비저닝된 Amazon EKS 클러스터로 복원되어야 합니다. 복원 워크플로의 일부로 사용자를 대신하여 생성할 새 EKS 클러스터를 생성하도록 선택할 수 AWS Backup 있습니다.

참고

AWS Backup 는 복원의 일부로 새 EKS 클러스터를 생성하기 위한 제한된 옵션 세트를 제공합니다. 모든 EKS 클러스터 생성 기능에 대해 고객은 EKS 콘솔 또는 API를 사용하여 새 EKS 클러스터를 생성하고 이를 복원 대상으로 선택할 수 있습니다. APIs

Amazon EKS의 복원 기능

복원 유형 복원 대상 복원 동작
기존 클러스터 복원 소스 EKS 클러스터 또는 기존 EKS 클러스터로 복원 모든 Kubernetes 리소스와 영구 볼륨을 기존 EKS 클러스터로 복원합니다. 모든 복원은 비파괴적이며 기존 객체는 덮어쓰지 않습니다. 건너뛴 객체의 경우 SNS 알림을 구독할 수 있습니다.
새 클러스터 복원 EKS 복원의 일부로 새 Amazon EKS 클러스터를 생성합니다. 복원은 새 EKS 클러스터를 생성하고 모든 Kubernetes 리소스 및 영구 볼륨을 새로 생성된 clsuter로 복원합니다.
네임스페이스 복원 기존 Amazon EKS 클러스터 지정된 네임스페이스만 복원하고 Kubernetes 리소스 및 해당 영구 스토리지 복원은 비파괴적이며 기존 객체를 덮어쓰지 않습니다. 건너뛴 객체의 경우 SNS 알림을 구독할 수 있습니다.
영구 스토리지 복원 영구 스토리지 종속 개별 영구 스토리지를 독립 실행형 복원으로 복원합니다. Amazon EBS, Amazon Amazon S3 EFS의 복원 동작을 참조하세요.

권한

필요한 권한은 복원 유형 및 대상에 따라 다릅니다.

  • AWS Backup의 관리형 정책 AWSBackupServiceRolePolicyForRestores에는 Amazon EKS 클러스터와 EBS 및 EFS 영구 스토리지를 복원하는 데 필요한 권한이 포함되어 있습니다.

  • EKS 클러스터에 S3 버킷이 포함되어 있거나 하위 S3 복구 시점만 복원하는 경우 내 다음 정책 또는 권한이 AWSBackupServiceRolePolicyForS3Restore 역할에 할당되었는지 확인해야 합니다.

복원 전 고려 사항

EKS 복원 작업을 시작하기 전에 다음을 검토합니다. 계정 또는 리전 간에 복사된 EKS 백업을 복원하는 경우 복원 실패를 방지하기 위해 복원 전에 이러한 고려 사항을 확인해야 합니다.

  1. IAM 역할: 다른 클러스터로 복원할 때 소스 클러스터에 사용되는 IAM 역할(예: 포드 자격 증명, IRSA. OIDC 공급자 구성 등)이 대상 클러스터로 계정/리전에 있어야 합니다.

  2. EKS 버전 및 호환성 보장: 복원하려는 객체의 API 버전은 동일한 버전(또는 가능한 한 가까운 버전)이어야 하며 새 클러스터에서 지원되어야 합니다. AWS Backup 는 EKS 버전 간에 최선의 복원을 수행하지만, 상당히 다른 버전 간에 복원할 때 호환성 문제가 발생할 수 있습니다.

  3. 스토리지 클래스 일치: 기존 EKS 클러스터로 복원하는 경우 복원하기 전에 적절한 CSI 스토리지 드라이버 추가 기능이 설치되어 있는지 확인합니다.

  4. S3 버킷: S3 버킷으로 EKS 클러스터를 복원할 때 S3 버킷의 버전이 지정되어 있고 대상 계정 또는 리전에서 액세스할 수 있는지 확인합니다.

  5. 이미지 리포지토리: EKS 클러스터를 복원할 때 대상 EKS 클러스터의 계정 또는 리전이 복원의 일부로 참조되는 이미지에 액세스할 수 있는지 확인합니다. 레지스트리에 충분한 교차 리전/계정 정책 권한이 있는지 확인합니다.

  6. 보안 그룹: 복원의 일부로 새 EKS 클러스터를 생성하는 경우 대상 계정 및 리전의 ALB, 포드 ID, EKS 노드 그룹 등에 대해 보안 그룹을 미리 생성해야 합니다.

  7. EBS 가용 영역 및 노드: EBS 볼륨을 복구하는 가용 영역을 기존 EKS 노드의 가용 영역에 매핑해야 합니다.

  8. 비파괴 복원: 모든 EKS 복원은 비파괴적이며 대상 복원의 Kubernetes 객체를 덮어쓰지 않습니다.

  9. EKS 감사 로그 활성화: 복원 전에 추가 로깅 및 문제 해결을 위해 EKS 감사 로그를 활성화합니다. SNS 알림을 구독하여 복원 시 건너뛰거나 실패한 객체를 알릴 수도 있습니다.

EKS 구성

복합 Amazon을 복원 AWS Backup할 때 복원 유형과 대상을 선택합니다. 소스 EKS 클러스터, 기존 EKS 클러스터로 복원하거나 복원 대상으로 새 EKS 클러스터를 생성하도록 선택할 수 있습니다. 새 EKS 클러스터의 경우 백업된 클러스터와 동일한 기존 인프라 설정(예: VPC, 서브넷)을 사용하거나 새 설정을 구성하도록 선택할 수 있습니다. AWS Backup 는 항상 기존 리소스를 덮어쓰지 않는 비파괴 복원을 수행합니다.

네임스페이스 복원의 경우 선택적으로 복원할 네임스페이스를 최대 5개까지 지정할 수 있습니다. 네임스페이스 범위 리소스만 복원되고 관련 영구 볼륨을 제외하고 클러스터 범위 리소스는 제외됩니다.

고급 설정으로 Kubernetes 객체의 복원 순서를 변경할 수 있습니다. 기본적으로 AWS Backup 는 모든 Kubernetes 객체를 다음 순서로 복원합니다.

클러스터 범위 Kubernetes 리소스

  1. 사용자 지정 리소스 정의

  2. 네임스페이스(네임스페이스 내의 리소스가 아닌 네임스페이스 자체)

  3. StorageClasses

  4. PersistentVolumes

네임스페이스 범위 Kubernetes 리소스

  1. PersistentVolumeClaims

  2. 보안 암호

  3. ConfigMaps

  4. ServiceAccounts

  5. LimitRanges

  6. 포드

  7. ReplicaSets

영구 스토리지 구성

복합 Amazon EKS 백업 복원의 일부로 두 번째 단계는 영구 스토리지 구성을 구성하는 것입니다. 이는 EKS 클러스터의 일부로 백업된 영구 스토리지에 따라 달라집니다.

Amazon EBS 스냅샷의 경우 Amazon EBS 볼륨이 복원 및 생성되는 가용 영역을 제공해야 합니다. 그러면 AWS Backup 는 볼륨을 복원의 일부로 EKS 클러스터에 다시 마운트할 수 있도록 선택한 것과 동일한 가용 영역에 EKS 포드를 생성하려고 시도합니다.

복원의 일부로 AWS Backup 는 Amazon EBS 볼륨과 Amazon S3 버킷을 복원된 EKS 클러스터에 다시 마운트합니다. Amazon EFS 파일 시스템은 임의의 접두사로 복원되며 EKS 클러스터에 다시 탑재하기 위해 복원 후 수동으로 액세스 포인트를 생성해야 합니다. AWS Backup 는 사용자를 대신하여 액세스 포인트 또는 탑재 대상을 생성하지 않습니다. 액세스 포인트탑재 대상에 대한 지침은 여기의 지침을 참조하세요.

Amazon EKS 복원 절차

AWS Backup 콘솔 또는를 사용하여 Amazon EKS 백업을 복원하려면 AWS CLI다음 단계를 따르세요.

Console
Amazon EKS 클러스터를 복원하려면
  1. https://console.aws.amazon.com/backup AWS Backup 콘솔을 엽니다.

  2. 탐색 창에서 백업 볼트를 선택합니다.

  3. Amazon EKS 백업이 포함된 백업 볼트를 선택한 다음 Amazon EKS 백업의 복구 시점을 선택합니다.

  4. 복원을 선택합니다.

  5. 복원 옵션 창에서 복원 유형을 선택합니다.

    • 전체 EKS 클러스터 복원 - 전체 Amazon EKS 복합 복구 시점을 복원합니다.

    • 복원할 네임스페이스 선택 - 최대 5개의 특정 네임스페이스 복원

  6. 대상을 구성합니다.

    • 클러스터 복원의 경우 새 클러스터를 생성하거나 기존 클러스터를 사용하도록 선택합니다.

    • 새 클러스터의 경우 클러스터 이름, Kubernetes 버전, VPC 구성, IAM 역할, 서브넷, 추가 보안 그룹, 노드 그룹 설정, fargate 프로파일 및 Pod Identity IAM 역할을 지정합니다.

    • 기존 클러스터의 경우 드롭다운에서 대상 클러스터를 선택합니다.

    • 네임스페이스 복원의 경우 대상 클러스터 및 네임스페이스 이름을 지정합니다.

  7. 선택적으로 Kubernetes 리소스의 사용자 지정 복원 순서에 대한 고급 설정을 구성합니다.

  8. 작업에 대한 IAM 복원 역할을 선택합니다. 기본 역할을 사용하지 않는 경우 선택한 역할에 iam:PassRole 권한이 포함되어 있는지 확인합니다.

  9. 백업 복원을 선택합니다.

AWS CLI

Amazon EKS 관련 메타데이터와 함께 aws backup start-restore-job 명령을 사용합니다.

필요한 메타데이터는 복원 유형에 따라 다릅니다. 모든 복원 작업에는 clusterName 파라미터가 필요합니다.

를 통해 Amazon EKS 복구 시점 복원 AWS CLI

StartRestoreJob을 사용합니다. Amazon EKS 복원 중에 다음 메타데이터를 지정할 수 있습니다.

필수 메타데이터:

  • clusterName - 복원할 클러스터 이름

선택적 메타데이터:

  • newCluster - (true/false) 복원 중에 새 EKS 클러스터를 생성해야 하는 경우

    • newCluster가 "true"인 경우 다음 메타데이터 필드가 적용됩니다.

      • eksClusterVersion - 복원 중에 클러스터 버전을 늘리려는 경우 원하는 K8s 버전의 클러스터

      • clusterRole - 생성된 EKS 클러스터에 연결할 IAM 역할 ARN

      • clusterVpcConfig - 생성된 EKS 클러스터에 대한 VPC/네트워킹 구성입니다. 이 필드에는 다음과 같은 중첩 필드가 있습니다.

        • vpcId - 클러스터와 연결된 VPC

        • subnetIds - 클러스터와 연결된 서브넷

        • securityGroupIds - 클러스터와 연결된 추가 보안 그룹

      • nodeGroups - EKS 클러스터에서 생성할 관리형 노드 그룹입니다. 복원을 위한 NodeGroups에는 백업 시간부터 동일한 노드 그룹이 모두 있어야 하며 일치하는 nodeGroupId가 있어야 합니다.

        • nodeGroupId - 노드 그룹의 ID

        • subnetIds - 노드 그룹과 연결된 Auto Scaling 그룹에 지정된 서브넷

        • instanceTypes - 노드 그룹이 시작 템플릿과 함께 배포되지 않은 경우 노드 그룹과 연결된 인스턴스 유형입니다.

        • nodeRole - 노드 그룹과 연결된 IAM 역할

        • securityGroupIds - 노드에 대한 SSH 액세스가 허용되는 보안 그룹 IDs

        • remoteAccessEc2SshKey - 관리형 노드 그룹의 노드와의 SSH 통신에 대한 액세스를 제공하는 Amazon EC2 SSH 키 이름입니다.

      • fargateProfiles - EKS 클러스터에서 생성할 Fargate 프로파일입니다. 복원을 위한 Fargate 프로파일에는 백업 시간과 동일한 Fargate 프로파일이 모두 있어야 하며 이름이 일치해야 합니다.

        • name - Fargate 프로파일의 이름

        • subnetIds - 포드를 시작할 서브넷의 IDs

        • podExecutionRoleArn - Fargate 프로파일의 선택기와 일치하는 포드에 사용할 포드 실행 역할의 IAM 역할 ARN

      • podIdentityAssociations - EKS 클러스터에서 생성할 포드 자격 증명 연결

        • associationId - 포드 자격 증명 연결의 ID

        • roleArn - 포드 자격 증명 연결을 위한 IAM 역할 ARN

  • kubernetesRestoreOrder - Kubernetes 매니페스트가 복원되는 순서를 재정의합니다. 이 순서는 기본 서비스 복원 순서보다 우선합니다. group/version/kind 또는 version/kind 형식을 따릅니다.

    ["v1/persistentvolumes","v1/pods","customresource/v2/custom"]

  • namespaceLevelRestore - (true/false) 네임스페이스 수준 복원을 수행하려는 경우

  • namespaces - namespaceLevelRestore 목록입니다. 복원할 네임스페이스를 최대 5개까지 제공할 수 있습니다.

  • restoreKubernetesManifestsOnly - (true/false) Kubernetes 매니페스트 파일만 복원하고 영구 스토리지 시스템(EBS, S3, EFS 등)은 복원하지 않으려는 경우

  • nestedRestoreJobs - 복합 Recovery Point의 PersistentVolume 스토리지 시스템에 대한 모든 중첩 Recovery Point의 메타데이터 구성을 복원합니다. RecoveryPointArn: RestoreMetadata의 복구 시점 맵입니다.

기존 클러스터로 복원

aws backup start-restore-job \ --recovery-point-arn "arn:aws:backup:us-west-2:123456789012:recovery-point:composite:eks/my-cluster-20240115" \ --iam-role-arn "arn:aws:iam::123456789012:role/AWSBackupServiceRolePolicyForEKSRestore" \ --metadata '{"clusterName":"existing-cluster","newCluster":false}' \ --resource-type "EKS"

새 클러스터로 복원

aws backup start-restore-job \ --recovery-point-arn "arn:aws:backup:us-west-2:123456789012:recovery-point:composite:eks/my-cluster-20240115" \ --iam-role-arn "arn:aws:iam::123456789012:role/AWSBackupServiceRolePolicyForEKSRestore" \ --metadata '{"clusterName":"new-cluster","newCluster":true,"clusterRole":"arn:aws:iam::123456789012:role/EKSClusterRole","eksClusterVersion":"1.33","clusterVpcConfig":"{\"vpcId\":\"vpc-1234\",\"subnetIds\":[\"subnet-1\",\"subnet-2\",\"subnet-3\"],\"securityGroupIds\":[\"sg-123\"]}","nodeGroups":"[{\"nodeGroupId\":\"nodegroup-1\",\"subnetIds\":[\"subnet-1\",\"subnet-2\",\"subnet-3\"],\"nodeRole\":\"arn:aws:iam::123456789012:role/EKSNodeGroupRole\",\"instanceTypes\":[\"t3.small\"]}]","fargateProfiles":"[{\"name\":\"fargate-profile-1\",\"subnetIds\":[\"subnet-1\",\"subnet-2\",\"subnet-3\"],\"podExecutionRoleArn\":\"arn:aws:iam::123456789012:role/EKSFargateProfileRole\"}]"}' \ --resource-type "EKS"

복원 작업을 시작한 후를 사용하여 진행 상황을 describe-restore-job 모니터링합니다.

aws backup describe-restore-job --restore-job-id restore-job-id

복원을 위해 실패한 객체와 건너뛴 객체에 대한 알림 이벤트를 구독할 수 있습니다. 자세한 내용은 를 사용한 알림 옵션을 참조하세요 AWS Backup.