¿Cómo se soluciona un error de actualización en el clúster de Amazon EKS?

9 minutos de lectura
0

No se puede actualizar el clúster de Amazon Elastic Kubernetes Service (Amazon EKS). ¿Cómo se soluciona esto?

Descripción breve

Para resolver un error en la actualización del clúster de Amazon EKS, intente lo siguiente:

  • En caso de que se presente un error IpNotAvailable, verifique si la subred asociada al clúster tiene suficientes direcciones IP disponibles.
  • En caso de que se presente un error SubnetNotFound, verifique si las subredes existen y están correctamente etiquetadas.
  • En caso de que se presente un error SecurityGroupNotFound, verifique si existen los grupos de seguridad asociados al clúster.
  • En caso de que se presente un error EniLimitReached, aumente la cuota de la interfaz de red elástica correspondiente a la cuenta de AWS.
  • En caso de que se presente un error AccessDenied, verifique que tiene los permisos correctos.
  • En caso de que se presente un error OperationNotPermitted, verifique que el rol de servicio de Amazon EKS tenga los permisos correctos.
  • En caso de que se presente un error VpcIdNotFound, verifique si la VPC asociada al clúster existe.
  • Verifique si los recursos que utilizó para crear el clúster fueron eliminados.
  • Con respecto a los clústeres creados con eksctl, verifique si se produjo un error en la pila de AWS CloudFormation durante la reversión.
  • Si se produce un error de ResourceInUseException, espere un momento antes de volver a intentar realizar la actualización.
  • En caso de problemas transitorios en el flujo de trabajo del backend, vuelva a actualizar el clúster.

Resolución

Verifique si las subredes tienen direcciones IP disponibles (IpNotAvailable)

Para actualizar un clúster de Amazon EKS, debe tener cinco direcciones IP disponibles de cada una de las subredes. Si no tiene suficientes direcciones IP disponibles, puede eliminar las interfaces de red que no se utilicen dentro de las subredes del clúster. Al eliminar una interfaz de red, se libera la dirección IP. Para obtener más información, consulte Eliminar una interfaz de red.

Para buscar direcciones IP disponibles en las subredes del clúster de Amazon EKS:

1.    Abra la consola de Amazon EKS en la región en la que creó el clúster.

2.    Seleccione Clusters (Clústeres) en la barra lateral. A continuación, seleccione el clúster de Amazon EKS.

3.    Elija la pestaña Configuración.

4.    Elija la pestaña Redes.

5.    En Subredes, seleccione una subred para abrir la página Subredes.

6.    Seleccione una subred y elija la pestaña Details (Detalles).

7.    Identifique las direcciones IPv4 disponibles para ver cuántas direcciones IP disponibles tiene la subred.

En la interfaz de línea de comandos de AWS, ejecute los siguientes comandos:

1.    Obtenga las subredes que están asociadas al clúster:

$ aws eks describe-cluster --name cluster-name --region your-region

Nota: Reemplace cluster-name por el nombre del clúster y your-region por el nombre de la región de AWS.

Salida:

...
   "subnetIds": [
                "subnet-6782e71e",
                "subnet-e7e761ac"
            ],
   ...

2.    Describa las subredes de la salida anterior:

aws ec2 describe-subnets --subnet-ids subet-id --region your-region

Nota: Reemplace subnet-id por el ID de la subred y your-region por la región.

Salida:

...
"AvailableIpAddressCount": 4089,
...

Si no tiene suficientes direcciones IP disponibles, puede establecer la variable de entorno en el daemonset aws-node en WARM_IP_TARGET: Esto define cuántas direcciones IP secundarias debe reservar la interfaz de red de contenedores (CNI) para los pods.

$ kubectl set env ds aws-node -n kube-system WARM_IP_TARGET=number

Nota: Reemplace number (número) por el número de direcciones IP que desea reservar de las subredes.

También puede utilizar la variable MINIMUM_IP_TARGET para controlar el número mínimo de direcciones IP por nodo.

Utilizar estas variables de configuración para controlar cuántas interfaces de red y direcciones IP se mantienen es una práctica recomendada.

Verifique si las subredes existen y están correctamente etiquetadas (SubnetNotFound)

Para verificar si las subredes existen, ejecute el siguiente comando:

aws ec2 describe-subnets --subnet-ids subet-id --region region

Nota: Reemplace subnet-id por el ID de la subred y region (región) por la región donde se encuentran las subredes.

Si las subredes no existen, aparecerá el siguiente error:

An error occurred (InvalidSubnetID.NotFound) when calling the DescribeSubnets operation: The subnet ID 'subnet-id' does not exist

Para verificar que las subredes están etiquetadas correctamente:

1.    Identifique las subredes asociadas al clúster según los pasos que se indican en la sección Compruebe si tiene suficientes direcciones IP disponibles (IpNotAvailable).

2.    Abra la consola de la VPC.

3.    Seleccione Subnets (Subredes) en la barra lateral.

4.    Seleccione las subredes que se deben asociar al clúster y elija la pestaña Etiquetas en el panel Detalles.

5.    Compruebe que cada subred tiene las etiquetas correctas:

Key - kubernetes.io/cluster/cluster-name

Nota: La etiqueta anterior solo se agrega a las versiones 1.18 o anteriores del clúster de Amazon EKS. Para los clústeres creados con la versión 1.19 y posteriores de Kubernetes, la etiqueta no es obligatoria. Reemplace cluster-name por el nombre del cluster.

El valor de la etiqueta puede ser compartido o propio.

Si cuenta con un plan de soporte, contacte al equipo de soporte para actualizar las subredes de Amazon EKS.

Verifique si los grupos de seguridad asociados al clúster existen (SecurityGroupNotFound)

Para identificar los grupos de seguridad asociados al clúster:

1.    Abra la consola de Amazon EKS en la región en la que creó el clúster.

2.    Seleccione el clúster.

3.    Elija la pestaña Configuración.

4.    Elija la pestaña Redes.

5.    Seleccione los grupos de seguridad que aparecen en Grupo de seguridad del clúster y Grupos de seguridad adicionales.

Si el grupo de seguridad existe, la consola se abre y muestra los detalles del grupo de seguridad.

Desde AWS CLI:

1.    Obtenga los grupos de seguridad asociados al clúster:

$ aws eks describe-cluster --name cluster-name --region your-region

Nota: Reemplace cluster-name por el nombre del clúster y your-region por la región.

Salida:

...
"securityGroupIds": [
    "sg-xxxxxxxx"
]
...

2.    Describa el grupo de seguridad de la salida anterior:

$ aws ec2 describe-security-groups --group-ids security-group-id --region your-region

Nota: Reemplace security-group-id por el ID del grupo de seguridad y your-region por la región.

Aumente la cuota de la interfaz de red elástica correspondiente a la cuenta de AWS (EniLimitReached)

Si alcanzó la cuota de interfaces de red, puede eliminar las interfaces de red no utilizadas o solicitar un aumento del límite .

Si las interfaces de red están asociadas a un clúster, elimine el clúster para quitar la interfaz de red. Si las interfaces de red están asociadas a nodos de trabajo no utilizados, elimine el grupo de Auto Scaling para los grupos de nodos autoadministrados. Para los grupos de nodos administrados, elimine el grupo de nodos de la consola de Amazon EKS. Para trasladar las cargas de trabajo de un grupo de nodos a otro grupo de nodos, consulte Migrar a un nuevo grupo de nodos.

Verifique que tiene los permisos correctos (AccessDenied)

1.    Abra la consola de IAM.

2.    En el panel de navegación, elija Roles o Usuarios.

3.    Seleccione el rol o el usuario.

4.    Verifique que el rol o usuario de IAM tenga los permisos correctos.

Verifique que el rol de servicio tiene los permisos correctos (OperationNotPermitted)

1.    Abra la consola de IAM.

2.    En el panel de navegación, elija Roles.

3.    Filtre por AWSServiceRoleForAmazonEKS y seleccione el rol.

4.    Verifique si el rol tiene la política AmazonEKSServiceRolePolicy asociada.

Si la política no está asociada, consulte Adding IAM identity permissions (Agregar permisos de identidad).

Verifique que la VPC asociada al clúster existe (VpcNotFound)

1.    Abra la consola de Amazon EKS en la región en la que creó el clúster.

2.    Seleccione el clúster.

3.    Elija la pestaña Configuración.

4.    Elija la pestaña Redes.

5.    Seleccione el enlace ID de la VPC para ver si la VPC existe.

Si la VPC no existe, deberá crear un nuevo clúster.

Verifique que se eliminaron los recursos asociados al clúster

Si creó el clúster en la consola de Amazon EKS y las subredes que se utilizaron para crear el clúster se eliminaron, el clúster no se podrá actualizar. Debe volver a crear el clúster y trasladar las cargas de trabajo del clúster antiguo al nuevo. Si cuenta con un plan de soporte, contacte al equipo de soporte para actualizar las subredes de Amazon EKS.

Verifique si se produjo un error en la pila de AWS CloudFormation durante la reversión (eksctl)

Si se produjo un error durante la reversión de la pila de CloudFormation, consulte How can I get my CloudFormation stack to update if it's stuck in the UPDATE_ROLLBACK_FAILED state? (¿Cómo se puede lograr que la pila de CloudFormation se actualice si está atascada en el estado UPDATE_ROLLBACK_FAILED?)

Espere un tiempo antes de volver a iniciar la actualización del plano de control (ResourceInUseException)

Este error se produce si al iniciar la actualización hay en curso una acción automatizada del plano de control de Amazon EKS, como unaactualización de la versión de la plataforma. Amazon EKS detecta y reemplaza automáticamente las instancias del plano de control en mal estado, a la vez que proporciona actualizaciones de versiones y revisiones automatizadas para estas. Espere un tiempo hasta que finalice la acción automatizada antes de volver a iniciar la actualización del plano de control.

Nota: El tiempo de espera depende del momento en que se inició la actualización automatizada. Si no está seguro de cuándo se resolverá la acción automatizada, espere una hora antes de volver a intentar actualizar el plano de control.

Vuelva a actualizar el clúster

Los problemas transitorios pueden provocar que los flujos de trabajo del backend sean inestables. Si los pasos de solución de problemas anteriores no se relacionan con su problema, intente actualizar el clúster de nuevo.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año