View a markdown version of this page

Restaure un clúster de Amazon EKS - AWS Backup

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Restaure un clúster de Amazon EKS

Puede restaurar las copias de seguridad del clúster de EKS mediante la AWS Backup consola o la CLI. Las copias de seguridad de EKS son puntos de recuperación compuestos que incluyen copias de seguridad de volúmenes persistentes y del estado del clúster de EKS.

AWS Backup admite múltiples experiencias de restauración, incluidas las restauraciones granulares a nivel de espacio de nombres. Las restauraciones no son destructivas y no sobrescribirán ningún objeto de Kubernetes existente en el clúster de EKS de destino. Las restauraciones tampoco sobrescribirán las versiones de Kubernetes del clúster de EKS de destino.

Las copias de seguridad de EKS deben restaurarse en un clúster de EKS de destino, es decir, en un clúster de Amazon EKS que se haya aprovisionado previamente. Como parte del flujo de trabajo de restauración, puede optar por crear un nuevo clúster de EKS que AWS Backup se creará en su nombre.

nota

AWS Backup proporcionará un conjunto limitado de opciones para crear un nuevo clúster de EKS como parte de una restauración. Para todas las funciones de creación de clústeres de EKS, los clientes pueden crear un nuevo clúster de EKS mediante la consola de EKS o las API y seleccionarlo como destino de restauración.

Capacidades de restauración de Amazon EKS

Tipo de restauración Restaurar el destino Restaurar el comportamiento
Restauración de clústeres existentes Restaure el clúster de EKS de origen o el clúster de EKS existente Restaura todos los recursos y volúmenes persistentes de Kubernetes en los clústeres de EKS existentes. Todas las restauraciones no son destructivas y los objetos existentes no se sobrescriben. En el caso de los objetos que se omiten, puede suscribirse a las notificaciones de SNS https://docs.aws.amazon.com/aws-backup/latest/devguide/backup-notifications.html
Restauración de un nuevo clúster Crea un nuevo clúster de Amazon EKS como parte de la restauración de EKS Restore crea un nuevo clúster de EKS y restaura todos los recursos y volúmenes persistentes de Kubernetes en un clúster recién creado
Restauración del espacio de nombres Clúster de Amazon EKS existente Restaura solo los espacios de nombres especificados, sus recursos de Kubernetes y las correspondientes restauraciones de almacenamiento persistente no son destructivas y los objetos existentes no se sobrescriben. En el caso de los objetos que se omiten, puedes suscribirte a las notificaciones de SNS
Restauración de almacenamiento persistente Depende del almacenamiento persistente Restaure el almacenamiento persistente individual como restauraciones independientes. Consulte Restore Behavior of Amazon EBS, Amazon S3 y Amazon EFS.

Permisos

Los permisos necesarios dependen del tipo de restauración y del destino de destino.

  • AWS Backup La política gestionada AWSBackupServiceRolePolicyForRestores contiene los permisos necesarios para restaurar el clúster de Amazon EKS y el almacenamiento persistente de EBS y EFS.

  • Si su clúster de EKS contiene un bucket de S3 o si solo va a restaurar el punto de recuperación de S3 secundario, deberá asegurarse de que las siguientes políticas o permisos estén asignados a su función AWSBackupServiceRolePolicyForS3Restore.

Consideraciones antes de restaurar

Antes de comenzar un trabajo de restauración de EKS, revise lo siguiente. Si va a restaurar una copia de seguridad de EKS que se ha copiado en varias cuentas o regiones, asegúrese de comprobar estas consideraciones antes de realizar la restauración para evitar errores en la restauración.

  1. Funciones de IAM: al restaurar en un clúster diferente, las funciones de IAM utilizadas en el clúster de origen (por ejemplo, Pod identity o IRSA). El proveedor de OIDC (configuraciones, etc.) debe estar presente en la cuenta o región como clúster de destino.

  2. Asegúrese de la versión y la compatibilidad de EKS: las versiones de API de los objetos que desea restaurar deben ser de la misma versión (o lo más parecidas posible) y ser compatibles con el nuevo clúster. AWS Backup hará todo lo posible para restaurar entre versiones de EKS, aunque pueden surgir problemas de compatibilidad al restaurar entre versiones muy diferentes.

  3. Clases de almacenamiento coincidentes: en el caso de las restauraciones en un clúster de EKS existente, asegúrese de instalar los complementos del controlador de almacenamiento CSI adecuados antes de realizar la restauración

  4. Depósitos de S3: Al restaurar un clúster de EKS con cubos de S3, asegúrese de que su depósito de S3 esté versionado y esté accesible en la cuenta o región de destino.

  5. Repositorio de imágenes: al restaurar un clúster de EKS, asegúrese de que la cuenta o región del clúster de EKS de destino tenga acceso a las imágenes a las que se hace referencia como parte de la restauración. Compruebe que su registro tenga los permisos suficientes entre regiones o políticas de cuentas.

  6. Grupos de seguridad: Los grupos de seguridad deben crearse previamente para ALB, Pod Identities, EKS Node Groups, etc. en la cuenta y región de destino si se va a crear un nuevo clúster de EKS como parte de la restauración

  7. Nodos y zonas de disponibilidad de EBS: las zonas de disponibilidad en las que recupere los volúmenes de EBS deben asignarse a la zona de disponibilidad de un nodo de EKS existente

  8. Non-destructive restauraciones: todas las restauraciones de EKS no serán destructivas y no sobrescribirán los objetos de Kubernetes de la restauración de destino.

  9. Habilite los registros de auditoría de EKS: habilite los registros de auditoría de EKS para registrar y solucionar problemas adicionales antes de la restauración. También puede suscribirse a las notificaciones de SNS para recibir notificaciones sobre objetos omitidos o fallidos durante la restauración.

  10. Nuevo búfer de restauración para la creación de clústeres de EKS: al crear un nuevo clúster de EKS durante la restauración, AWS Backup introduce un búfer de 15 minutos después de que el clúster de EKS alcance el estado disponible, pero antes de crear cualquier recurso de EKS adicional. Este búfer garantiza que todos los componentes de EKS subyacentes se inicialicen por completo antes de crear los recursos dependientes.

  11. Datos de usuario en la plantilla de lanzamiento: al crear un grupo de nodos con una plantilla de lanzamiento, no los especifique spec.cluster en la sección de datos de usuario de la plantilla de lanzamiento. Amazon EKS inyecta automáticamente los parámetros de identidad del clúster (apiServerEndpointcertificateAuthority, yserviceIpv4Cidr) y los combina con cualquier configuración adicional definida en los datos de usuario.

Configuraciones de EKS

Al restaurar el Amazon compuesto AWS Backup, usted elige el tipo de restauración y el destino de destino. Puede optar por restaurar en el clúster de EKS de origen, en un clúster de EKS existente o crear un nuevo clúster de EKS como destino de restauración. En el caso de los clústeres de EKS nuevos, puede optar por utilizar la misma configuración de infraestructura existente (por ejemplo, la VPC o las subredes) que el clúster del que se hizo la copia de seguridad o configurar otros nuevos. AWS Backup está diseñado para realizar una restauración no destructiva que no sobrescriba los recursos existentes.

Para las restauraciones de espacios de nombres, puede especificar hasta 5 espacios de nombres para restaurar de forma selectiva. Solo se restauran los recursos con ámbito de espacio de nombres, mientras que los recursos con ámbito de clúster se excluyen, excepto los volúmenes persistentes relacionados.

Como configuración avanzada, puedes optar por cambiar el orden de restauración de los objetos de Kubernetes. De forma predeterminada, AWS Backup restaurará todos los objetos de Kubernetes en el siguiente orden:

Recursos de Kubernetes con ámbito de clúster

  1. Definiciones de recursos personalizadas

  2. Espacios de nombres (el espacio de nombres en sí, no los recursos dentro de ese espacio de nombres)

  3. StorageClasses

  4. PersistentVolumes

Recursos de Kubernetes con ámbito de espacio de nombres

  1. PersistentVolumeClaims

  2. Secretos

  3. ConfigMaps

  4. ServiceAccounts

  5. LimitRanges

  6. Pods

  7. ReplicaSets

Configuraciones de almacenamiento persistente

Como parte de la restauración de copias de seguridad compuesta de Amazon EKS, el segundo paso consistirá en configurar las configuraciones de almacenamiento persistente. Esto variará en función del almacenamiento persistente del que se haya hecho una copia de seguridad como parte de su clúster de EKS.

Para las instantáneas de Amazon EBS, debe proporcionar una zona de disponibilidad en la que se restaurará y creará el volumen de Amazon EBS. AWS Backup a continuación, intentará crear el pod de EKS en la misma zona de disponibilidad que la seleccionada para poder volver a montar el volumen en el clúster de EKS como parte de la restauración.

Como parte de la restauración, AWS Backup volverá a montar los volúmenes de Amazon EBS y los buckets de Amazon S3 en el clúster de EKS restaurado. Los sistemas de archivos de Amazon EFS se restauran con prefijos aleatorios y requieren la creación manual de puntos de acceso después de la restauración para volver a montarlos en el clúster de EKS. AWS Backup no crea puntos de acceso ni monta objetivos en su nombre. Consulte aquí la guía para obtener información sobre los puntos de acceso y los objetivos de montaje. https://docs.aws.amazon.com/efs/latest/ug/manage-fs-access-create-delete-mount-targets.html

Procedimiento de restauración de Amazon EKS

Siga estos pasos para restaurar las copias de seguridad de Amazon EKS mediante la AWS Backup consola o AWS CLI:

Console
Para restaurar su clúster de Amazon EKS
  1. Abra la AWS Backup consola en https://console.aws.amazon.com/backup.

  2. En el panel de navegación, elija Backup vaults (Almacenes de copia de seguridad).

  3. Elija el almacén de copias de seguridad que contenga su copia de seguridad de Amazon EKS y, a continuación, seleccione el punto de recuperación para su copia de seguridad de Amazon EKS.

  4. Elija Restore (Restaurar).

  5. En el panel de opciones de restauración, elija el tipo de restauración:

    • Restaure todo el clúster de EKS: restaura todo el punto de recuperación compuesto de Amazon EKS

    • Seleccione los espacios de nombres para restaurar: restaura hasta cinco espacios de nombres específicos

  6. Configure el destino de destino:

    • Para la restauración del clúster, elija crear un clúster nuevo o usar un clúster existente

    • Para los clústeres nuevos, especifica el nombre del clúster, la versión de Kubernetes, la configuración de la VPC, las funciones de IAM, las subredes, los grupos de seguridad adicionales, la configuración de los grupos de nodos, los perfiles de Fargate y las funciones de IAM de Pod Identity

    • Para los clústeres existentes, selecciona el clúster de destino en el menú desplegable

    • Para restaurar el espacio de nombres, especifique el clúster de destino y los nombres del espacio de nombres

  7. Si lo desea, configure los ajustes avanzados para personalizar el orden de restauración de los recursos de Kubernetes.

  8. Elija el rol de restauración de IAM para el trabajo. Si no utilizas el rol predeterminado, asegúrate de que el rol seleccionado incluya el permiso iam:. PassRole

  9. Seleccione Restaurar copia de seguridad.

AWS CLI

Usa el aws backup start-restore-job comando con los EKS-specific metadatos de Amazon.

Los metadatos necesarios dependen del tipo de restauración. Todas las operaciones de restauración requieren el clusterName parámetro.

Restaure los puntos de recuperación de Amazon EKS mediante AWS CLI

Uso StartRestoreJob. Puede especificar los siguientes metadatos durante las restauraciones de Amazon EKS:

Metadatos obligatorios:

  • clusterName- Nombre del clúster al que se va a restaurar

Metadatos opcionales:

  • newCluster- (true/false) Si debemos crear un nuevo clúster de EKS durante la restauración. Si NewCluster es «verdadero», se aplican los siguientes campos de metadatos:

    • eksClusterVersion- La versión K8s deseada del clúster si desea aumentar la versión del clúster durante la restauración

    • clusterRole- El ARN del rol de IAM que se debe adjuntar al clúster de EKS creado

    • encryptionConfigProviderKeyArn- Especifique el ARN de la clave de KMS para cifrar el clúster de destino. Puede ser la clave de KMS del clúster de origen o una clave de KMS diferente. Se debe proporcionar una clave de KMS diferente al realizar una restauración entre regiones o entre cuentas. Omita estos metadatos por completo si el clúster de origen no está cifrado.

    • clusterVpcConfig- VPC/Networking configuración para el clúster de EKS creado. Este campo tiene los siguientes campos anidados:

      • vpcId- La VPC asociada a su clúster

      • subnetIds [Required]- Las subredes asociadas a su clúster

      • securityGroupIds [Required]- Los grupos de seguridad adicionales asociados a su clúster

    • nodeGroups- Los grupos de nodos administrados que se crearán en el clúster EKS. Los NodeGroups que se van a restaurar deben tener todos los mismos grupos de nodos de la época de la copia de seguridad y tener un nodo coincidenteGroupId.

      • nodeGroupId [Required]- El ID del grupo de nodos

      • subnetIds [Required]- Las subredes que se especificaron para el grupo de Auto Scaling asociado a tu grupo de nodos

      • instanceTypes- Si el grupo de nodos no se implementó con una plantilla de lanzamiento, este es el tipo de instancia que está asociado al grupo de nodos

      • nodeRole [Required]- El rol de IAM asociado a tu grupo de nodos

      • securityGroupIds- Los ID del grupo de seguridad a los que se permite el acceso SSH a los nodos

      • remoteAccessEc2SshKey- El nombre de la clave SSH de Amazon EC2 que proporciona acceso para la comunicación SSH con los nodos del grupo de nodos gestionado

      • launchTemplateId- Especifique el ID de la plantilla de lanzamiento para crear el grupo de nodos. Puede ser el ID de la plantilla de lanzamiento del clúster de origen o un ID de plantilla de lanzamiento diferente. Si la plantilla de lanzamiento del clúster de origen contiene un punto final codificado que apunta al propio clúster de origen, debe proporcionar un ID de plantilla de lanzamiento diferente. Omita estos metadatos por completo si el clúster de origen no usa una plantilla de lanzamiento.

      • launchTemplateVersion- Versión de la plantilla de lanzamiento asociada al ID de la plantilla de lanzamiento especificado.

    • fargateProfiles- Los perfiles de Fargate que se crearán en el clúster EKS. Los perfiles de Fargate que se van a restaurar deben tener todos los mismos perfiles de Fargate de la época de la copia de seguridad y tener un nombre coincidente.

      • name [Required]- El nombre del perfil de Fargate

      • subnetIds- Los ID de las subredes en las que lanzar un pod

      • podExecutionRoleArn [Required]- El ARN del rol de IAM del rol de ejecución del pod que se utilizará en un pod que coincida con los selectores del perfil de Fargate

    • podIdentityAssociations- Las asociaciones de identidades de los pods que se crearán en el clúster EKS

      • associationId- El ID de la asociación Pod Identity

      • roleArn- El ARN del rol de IAM para la Pod Identity Association

  • kubernetesRestoreOrder- Anula el orden en que se restauran los manifiestos de Kubernetes. Este orden tendrá prioridad sobre el orden predeterminado de restauración del servicio. Sigue el formato: group/version /kind o version/kind

    Por ejemplo: ["v1/persistentvolumes","v1/pods","customresource/v2/custom"]

  • namespaceLevelRestore- (true/false) Si desea realizar una restauración a nivel de espacio de nombres

  • namespaces- Una lista de espacios de nombres para restaurar si el espacio de nombres LevelRestore es «verdadero». Puede proporcionar hasta 5 espacios de nombres para restaurar.

    Por ejemplo: ["ns-1","ns-2","ns-3","ns-4","ns-5"]

  • restoreKubernetesManifestsOnly- (true/false) Si solo desea restaurar los archivos de manifiesto de Kubernetes y no los sistemas de almacenamiento persistente (EBS, S3, EFS, etc.)

  • nestedRestoreJobs- Restaure la configuración de metadatos de todos los puntos de recuperación anidados para los sistemas de PersistentVolume almacenamiento del punto de recuperación compuesto. Este es un mapa de RecoveryPointArn: de ese RestoreMetadata punto de recuperación

Restaurar al clúster existente

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/AWSBackupDefaultServiceRole" \ --metadata '{"clusterName":"existing-cluster","newCluster":"false"}' \ --resource-type "EKS"

Restaure espacios de nombres específicos en un clúster existente:

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/AWSBackupDefaultServiceRole" \ --metadata '{"clusterName":"existing-cluster","newCluster":"false","namespaceLevelRestore":"true","namespaces":"[\"ns-1\",\"ns-2\",\"ns-3\",\"ns-4\",\"ns-5\"]"}' \ --resource-type "EKS"

Restaure los volúmenes persistentes anidados en un clúster existente:

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/AWSBackupDefaultServiceRole" \ --metadata '{"clusterName":"existing-cluster","newCluster":"false","namespaceLevelRestore":"true","nestedrestorejobs":"{\"arn:aws:ec2:us-west-2::snapshot/snap-abc123\":\"{\\\"AvailabilityZone\\\":\\\"us-west-2a\\\"}\",\"arn:aws:backup:us-west-2:123456789012:recovery-point:fa71a304-2555-4c37-8128-f154b9578032\":\"{\\\"DestinationBucketName\\\":\\\"bucket-name\\\"}\"}"}' \ --resource-type "EKS"

Restaurar a un nuevo clúster

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/AWSBackupDefaultServiceRole" \ --metadata '{"clusterName":"new-cluster","newCluster":"true","clusterRole":"arn:aws:iam::123456789012:role/EKSClusterRole","eksClusterVersion":"1.33","encryptionConfigProviderKeyArn":"arn:aws:kms:us-west-2:123456789012:key/ecb2b326-784d-4ec0-8d07-20ab826b5a13","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\"],\"launchTemplateId\":\"lt-0b13949aae3f2b867\",\"launchTemplateVersion\":\"1\"}]","fargateProfiles":"[{\"name\":\"fargate-profile-1\",\"subnetIds\":[\"subnet-1\",\"subnet-2\",\"subnet-3\"],\"podExecutionRoleArn\":\"arn:aws:iam::123456789012:role/EKSFargateProfileRole\"}]"}' \ --resource-type "EKS"

Tras iniciar el trabajo de restauración, utilice describe-restore-job para supervisar el progreso:

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

Puedes suscribirte a los eventos de notificación para recuperar objetos fallidos u omitidos. Para obtener más información, consulte Opciones de notificación con AWS Backup.

Mensajes de estado de restauración de Amazon EKS

Cuando finalice un trabajo de restauración, es posible que vea los siguientes mensajes de estado. La tabla muestra los posibles escenarios y sus valores de estado de trabajo correspondientes:

Escenario Estado del trabajo Ejemplo de mensaje
Todos los objetos se restauraron correctamente COMPLETED
No se pudieron restaurar uno o más objetos COMPLETED «No se pudieron restaurar uno o más objetos de Kubernetes. To get notified of these failures, enable SNS event notifications”.
No se pudo completar la restauración ERROR (detalles del error)

Objetos omitidos durante la restauración

Los siguientes objetos de Kubernetes se restauran haciendo todo lo posible. Si no se restauran, se mueven a la lista de omitidos. Estos objetos los administra el sistema y Kubernetes o Amazon EKS los recrean:

  • FlowSchemas con la anotación apf.kubernetes.io/autoupdate-spec: "true"

  • PriorityLevelConfigurations con la anotación apf.kubernetes.io/autoupdate-spec: "true"

  • El eks-exempt FlowSchema (EKS-managed, hace referencia al exento PriorityLevelConfiguration protegido)

  • El kubernetes servicio en el espacio de default nombres (punto final del servidor API)

  • El kube-dns servicio en el espacio de kube-system nombres (CoreDNS)

Los siguientes objetos de Kubernetes siempre se omiten durante una restauración. Estos objetos incluyen la infraestructura de nodos y los componentes de red. Hacen referencia al estado específico del clúster. Los controladores de Kubernetes recrean automáticamente estos objetos cuando los nodos y los servicios se activan en el clúster de destino. Si restauras estos objetos a partir de una copia de seguridad, pueden provocar conflictos o errores. Estos conflictos se producen porque los objetos restaurados hacen referencia a recursos que no existen en el clúster de destino.

  • Puntos finales (v1/endpoints): puntos finales de red que definen las direcciones IP de los servicios. El controlador de terminales los administra automáticamente en función de los selectores de servicios.

  • EndpointSlices (discovery.k8s.io/v1/endpointslices) - El EndpointSlice controlador administra automáticamente estos objetos.

  • ipAddresses (networking.k8s.io/v1/ipaddresses): las redes de Kubernetes administran estas asignaciones de IP internas del clúster.

  • csNodes (storage.k8s.io/v1/csinodes): el kubelet crea automáticamente estos objetos cuando los controladores CSI se registran en un nodo.

  • VolumeAttachments (storage.k8s.io/v1/volumeattachments) - El attach/detach controlador crea automáticamente estos objetos cuando los pods requieren volúmenes.

Los objetos que ya existen en el clúster de destino también se omiten. Las restauraciones de EKS no son destructivas: los objetos existentes nunca se sobrescriben ni eliminan.

Para recibir notificaciones sobre objetos omitidos o fallidos durante la restauración, suscríbase a las notificaciones de eventos de SNS. Para obtener más información, consulte Opciones de notificación con. AWS Backup

Consideraciones sobre OIDC e IRSA para la restauración entre clústeres

Al restaurar una copia de seguridad de Amazon EKS en un clúster diferente al de origen, los objetos de Kubernetes que hacen referencia a las funciones de IAM para cuentas de servicio (IRSA) conservan el punto final del proveedor OIDC del clúster de origen. Estas referencias se encuentran en las anotaciones de las cuentas de servicio y en las políticas de confianza de IAM. AWS Backup no las actualiza automáticamente durante la restauración.

Si sus cargas de trabajo utilizan IRSA, una restauración entre clústeres requiere:

  • El clúster de destino debe tener un proveedor de OIDC configurado.

  • Todas las funciones de IAM a las que hagan referencia las cuentas de servicio de Kubernetes deben tener sus políticas de confianza actualizadas para incluir el punto final del proveedor de OIDC del clúster de destino.

  • Las anotaciones de las cuentas de servicio (eks.amazonaws.com/role-arn) seguirán haciendo referencia a las funciones originales. Comprueba que coincidan con las funciones válidas de la cuenta de destino.

Si no se cumplen estas dependencias, los pods no asumirán las funciones de IAM tras la restauración, y es posible que las tareas de restauración informen de errores durante la validación.

Recomendación: Para las cargas de trabajo que requieren la portabilidad de la restauración entre clústeres o cuentas, recomendamos utilizar EKS Pod Identity en lugar de IRSA. EKS Pod Identity no depende de proveedores de OIDC específicos de cada clúster y simplifica los escenarios de restauración entre clústeres.