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.
AWSSupport-TroubleshootEKSALBControllerIssues
Descripción
El manual de AWSSupport-TroubleshootEKSALBControllerIssues automatización ayuda a diagnosticar problemas comunes que impiden que el controlador del balanceador de AWS carga aprovisione y administre correctamente el balanceador de carga de aplicaciones (ALB) y el balanceador de carga de red (NLB) para las entradas y los servicios de Kubernetes.
Este manual realiza una validación integral de los componentes esenciales, como la configuración del proveedor de identidad OIDC, la configuración de IRSA, los requisitos previos de red, la configuración y las cuotas de recursos. ingress/service También captura los registros de los controladores y las configuraciones de recursos de Kubernetes relevantes para ayudar a identificar errores de configuración o problemas operativos.
importante
Este manual de automatización está diseñado para los clústeres de Amazon EKS que utilizan grupos de nodos de Amazon Elastic Compute Cloud (Amazon EC2) y, por el momento, no admite clústeres en los que se ejecuten. AWS Fargate
¿Cómo funciona?
El libro de instrucciones AWSSupport-TroubleshootEKSALBControllerIssues lleva a cabo los siguientes pasos de alto nivel:
-
Valida el estado del clúster de Amazon EKS, la configuración de las entradas de acceso y la configuración del proveedor OIDC.
-
Crea un proxy Lambda temporal para la comunicación con la API de Kubernetes.
-
Comprueba la implementación del controlador AWS Load Balancer y la configuración de la cuenta de servicio.
-
Verifica la identidad del pod, el webhook y la inyección de roles de IAM.
-
Valida la configuración y el etiquetado de la subred para el aprovisionamiento del balanceador de carga de aplicaciones y del balanceador de carga de red.
-
Compara las cuotas de las cuentas de Application Load Balancer y Network Load Balancer con el uso actual.
-
Valida las anotaciones de los recursos de entrada y servicio.
-
Comprueba el etiquetado de los grupos de seguridad de los nodos de trabajo para comprobar la integración del balanceador de cargas.
-
Recopila los registros de los módulos del controlador para realizar diagnósticos.
-
Limpia los recursos de autenticación temporales.
-
Genera un informe de diagnóstico con los hallazgos y los pasos de corrección.
nota
-
El clúster de Amazon EKS debe tener una entrada de acceso configurada para la entidad de IAM que ejecute esta automatización. El modo de autenticación del clúster debe configurarse en
APIoAPI_AND_CONFIG_MAP. Sin una configuración de entrada de acceso adecuada, la automatización finalizará durante la validación inicial. -
El
LambdaRoleArnparámetro es obligatorio y debe tener las políticas AWS administradasAWSLambdaBasicExecutionRoleyAWSLambdaVPCAccessExecutionRoleadjuntadas para permitir que la función de proxy se comunique con la API de Kubernetes. -
El controlador del balanceador de AWS carga debe ser de una versión o posterior.
v2.1.1 -
La automatización incluye un paso de limpieza que elimina los recursos temporales de la infraestructura de autenticación. Este paso de limpieza se ejecuta incluso cuando los pasos anteriores fallan, lo que garantiza que no queden recursos huérfanos en la cuenta. AWS
Ejecuta esta automatización (consola)
Tipo de documento
Automatización
Propietario
Amazon
Plataformas
/
Permisos de IAM necesarios
El parámetro AutomationAssumeRole requiere las siguientes acciones para utilizar el manual de procedimientos correctamente.
cloudformation:CreateStackcloudformation:DeleteStackcloudformation:DescribeStackscloudformation:UpdateStackec2:CreateNetworkInterfaceec2:DeleteNetworkInterfaceec2:DescribeInstancesec2:DescribeNetworkInterfacesec2:DescribeRouteTablesec2:DescribeSecurityGroupsec2:DescribeSubnetsec2:DescribeVpcseks:DescribeClustereks:ListAssociatedAccessPolicieselasticloadbalancing:DescribeAccountLimitselasticloadbalancing:DescribeLoadBalancersiam:GetRoleiam:ListOpenIDConnectProvidersiam:PassRolelambda:CreateFunctionlambda:DeleteFunctionlambda:GetFunctionlambda:InvokeFunctionlambda:ListTagslambda:TagResourcelambda:UntagResourcelambda:UpdateFunctionCodelogs:CreateLogGrouplogs:CreateLogStreamlogs:DescribeLogGroupslogs:DescribeLogStreamslogs:ListTagsForResourcelogs:PutLogEventslogs:PutRetentionPolicylogs:TagResourcelogs:UntagResourcessm:DescribeAutomationExecutionsssm:GetAutomationExecutionssm:StartAutomationExecutiontag:GetResourcestag:TagResources
Instrucciones
Sigue estos pasos para configurar y ejecutar la automatización:
nota
Antes de ejecutar la automatización, siga estos pasos para configurar las funciones de IAM necesarias: una para que Systems Manager Automation ejecute el runbook y otra para que Lambda se comunique con la API de Kubernetes:
-
Crea una función de automatización de SSM en tu cuenta.
TroubleshootEKSALBController-SSM-RoleVerifique que la relación de confianza contiene la siguiente política.{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
Asocie la siguiente política de IAM para conceder los permisos necesarios:
{ "Version": "2012-10-17", "Statement": [{ "Sid": "TroubleshootEKSALBControllerIssuesActions", "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:ListAssociatedAccessPolicies", "iam:GetRole", "iam:ListOpenIDConnectProviders", "ssm:StartAutomationExecution", "ssm:GetAutomationExecution", "ssm:DescribeAutomationExecutions", "ec2:DescribeSubnets", "ec2:DescribeRouteTables", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeAccountLimits", "ec2:DescribeInstances", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups" ], "Resource": "*" }, { "Sid": "SetupK8sApiProxyForEKSActions", "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStacks", "cloudformation:UpdateStack", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "eks:DescribeCluster", "iam:GetRole", "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:GetFunction", "lambda:InvokeFunction", "lambda:ListTags", "lambda:TagResource", "lambda:UntagResource", "lambda:UpdateFunctionCode", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:ListTagsForResource", "logs:PutLogEvents", "logs:PutRetentionPolicy", "logs:TagResource", "logs:UntagResource", "ssm:DescribeAutomationExecutions", "tag:GetResources", "tag:TagResources" ], "Resource": "*" }, { "Sid": "PassRoleToAutomation", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringLikeIfExists": { "iam:PassedToService": [ "lambda.amazonaws.com", "ssm.amazonaws.com" ] } } }] } -
Configure la entrada de acceso para su clúster de Amazon EKS. Este es un requisito obligatorio para la automatización. Para ver los pasos para configurar el modo de autenticación para las entradas de acceso, consulte Configurar las entradas de acceso.
En la consola de Amazon EKS, navegue hasta su clúster y siga estos pasos:
En la sección Acceso, compruebe que su configuración de autenticación esté establecida en
APIoAPI_AND_CONFIG_MAP.-
Elija Crear entrada de acceso y configure:
Para el ARN principal de IAM, seleccione el rol de IAM que creó ().
TroubleshootEKSALBController-SSM-RoleEn Tipo, seleccione
Standard.
-
Añada una política de acceso:
En Nombre de la política, seleccione
AmazonEKSAdminViewPolicy.Para Alcance de acceso, seleccione
Cluster.
Elija Add Policy (Agregar política).
Verifique los detalles y elija Crear.
-
Cree un rol de IAM para la función Lambda (al que se hace referencia
LambdaRoleArnen los parámetros de entrada):-
Cree un nuevo rol de IAM con la siguiente política de confianza:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
Adjunte las siguientes políticas AWS administradas a este rol:
AWSLambdaBasicExecutionRoleAWSLambdaVPCAccessExecutionRole
-
Anote el ARN de este rol, ya que lo necesitará para el parámetro
LambdaRoleArnde entrada.
-
-
Navegue hasta AWSSupport-TroubleshootEKSALBControllerIssues
la consola AWS de Systems Manager. -
Elija Ejecutar automatización.
-
Para los parámetros de entrada, introduzca lo siguiente:
-
AutomationAssumeRole (Opcional):
Tipo: AWS: :IAM: :Rol: :Arn
Descripción: (opcional) El nombre de recurso de Amazon (ARN) del rol AWS Identity and Access Management (IAM) que permite a Systems Manager Automation realizar acciones en su nombre. Si no se especifica ningún rol, Systems Manager Automation utiliza los permisos del usuario que comienza este manual de procedimientos.
Patrón permitido: ^arn :(? :aws|aws-cn|aws-us-gov) :iam::\ d {12} :role/? [a-z _0-9+=, A-Z .@\ -_/] +$
-
EksClusterName (Obligatorio):
Tipo: cadena
Descripción: (obligatorio) Nombre del clúster de Amazon Elastic Kubernetes Service (Amazon EKS).
Patrón permitido: ^ [0-9A-Za-z] [A-Za-z0-9-_] {0,99} $
-
ALBControllerDeploymentName (Opcional):
Tipo: cadena
Descripción: (opcional) El nombre de la implementación del controlador del balanceador de AWS carga en su clúster de Amazon EKS. Suele ser «aws-load-balancer-controller», a menos que lo haya personalizado durante la instalación.
Patrón permitido: ^ [a-z0-9] ([-.a-z0-9] {0,251} [a-z0-9])? $
Predeterminado: aws-load-balancer-controller
-
ALBControllerNamespace (Opcional):
Tipo: cadena
Descripción: (opcional) El espacio de nombres de Kubernetes en el que se implementa el controlador del balanceador de AWS cargas. De forma predeterminada, es «kube-system», pero puede ser diferente si has instalado el controlador en un espacio de nombres personalizado.
Patrón permitido: ^ [a-z0-9] ([-a-z0-9] {0,61} [a-z0-9])? $
Predeterminado: kube-system
-
ServiceAccountName (Opcional):
Tipo: cadena
Descripción: (opcional) El nombre de la cuenta de servicio de Kubernetes asociada al controlador del balanceador de AWS carga. Suele ser «aws-load-balancer-controller», a menos que se personalice durante la instalación.
Patrón permitido: ^ [a-z0-9] ([-.a-z0-9] {0,251} [a-z0-9])? $
Predeterminado: aws-load-balancer-controller
-
ServiceAccountNamespace (Opcional):
Tipo: cadena
Descripción: (opcional) El espacio de nombres de Kubernetes donde se encuentra la cuenta de servicio del controlador del balanceador de AWS carga. Por lo general, se trata de «kube-system», pero puede variar si has utilizado un espacio de nombres personalizado.
Patrón permitido: ^ [a-z0-9] ([-a-z0-9] {0,61} [a-z0-9])? $
Predeterminado: kube-system
-
IngressName (Opcional):
Tipo: cadena
Descripción: (opcional) Nombre del recurso de Ingress que se va a validar (balanceador de carga de aplicaciones). Si no se especifica, se omitirá la validación de Ingress.
Patrón permitido: ^$|^ [a-z0-9] [a-z0-9.-] {0,251} [a-z0-9] $
Predeterminado: «» (cadena vacía)
-
IngressNamespace (Opcional):
Tipo: cadena
Descripción: (opcional) Espacio de nombres del recurso Ingress. Es obligatorio si se ha especificado
IngressName.Patrón permitido: ^$|^ [a-z0-9] [a-z0-9-] {0,61} [a-z0-9] $
Predeterminado: «» (cadena vacía)
-
ServiceName (Opcional):
Tipo: cadena
Descripción: (opcional) Nombre de un recurso de servicio específico para validar las anotaciones del balanceador de carga de red (balanceador de carga de red). Si no se especifica, se omitirá la validación de los recursos de servicio.
Patrón permitido: ^$|^ [a-z0-9] [a-z0-9.-] {0,251} [a-z0-9] $
Predeterminado: «» (cadena vacía)
-
ServiceNamespace (Opcional):
Tipo: cadena
Descripción: espacio de nombres (opcional) del recurso de servicio. Es obligatorio si se ha especificado
ServiceName.Patrón permitido: ^$|^ [a-z0-9] [a-z0-9-] {0,61} [a-z0-9] $
Predeterminado: «» (cadena vacía)
-
LambdaRoleArn (Obligatorio):
Tipo: AWS: :IAM: :Rol: :Arn
Descripción: (Obligatorio) El ARN del rol de IAM que permite a la función AWS Lambda (Lambda) acceder a los servicios y recursos necesarios. AWS Asocie las políticas AWS administradas
AWSLambdaBasicExecutionRoleyAWSLambdaVPCAccessExecutionRolea su función de IAM de ejecución de la función lambda.Patrón permitido: ^arn :(? :aws|aws-cn|aws-us-gov) :iam::\ d {12} :role/? [a-z _0-9+=, A-Z .@\ -_/] +$
-
-
Elija Ejecutar.
-
Se inicia la automatización.
-
Este documento realiza los siguientes pasos:
-
ValidateAccessEntryAndOIDCProvider:
Valida la configuración de IAM del clúster de Amazon EKS comprobando los permisos de entrada de acceso y la configuración del proveedor de OIDC.
-
SetupK8sAuthenticationClient:
Ejecute el documento SAW AWSSupport-SetupK8sApiProxyForEKS para configurar una función lambda que ejecute las llamadas a la API de Amazon EKS en el clúster.
-
VerifyALBControllerAndIRSASetup:
Comprueba si la cuenta de servicio y el controlador del balanceador de cargas de aplicaciones determinados existen en sus respectivos espacios de nombres. Comprueba también la política de confianza y anotación de roles de la cuenta de servicio del controlador Application Load Balancer.
-
VerifyPodIdentityWebhookAndEnv:
Comprueba si pod-identity-webhook se está ejecutando. También comprueba si el IRSA se inyecta en las variables ENV del pod.
-
ValidateSubnetRequirements:
Compruebe al menos dos subredes en dos zonas de disponibilidad con 8 IP disponibles. Los balanceadores de carga tienen el etiquetado de subred adecuado. public/private
-
CheckLoadBalancerLimitsAndUsage:
Compara el límite de la cuenta con la cantidad de balanceadores de carga de aplicaciones y balanceadores de carga de red.
-
CheckIngressOrServiceAnnotations:
Comprueba si las anotaciones y especificaciones son correctas en los recursos de Ingress y Service para asegurarse de que están configurados correctamente para el uso del balanceador de carga de aplicaciones y del balanceador de carga de red.
-
CheckWorkerNodeSecurityGroupTags:
Verifique que exactamente un grupo de seguridad conectado a los nodos de trabajo tenga la etiqueta de clúster requerida.
-
CaptureALBControllerLogs:
Recupera los registros de diagnóstico más recientes de los módulos del controlador del balanceador de AWS carga que se ejecutan en el clúster de Amazon EKS.
-
CleanupK8sAuthenticationClient:
Ejecuta el documento SAW 'AWSSupport-SetupK8sApiProxyForEKS' mediante la operación de «limpieza» para limpiar los recursos creados como parte de la automatización.
-
GenerateReport:
Genera el informe de automatización.
-
-
Una vez finalizada la ejecución, consulte la sección Resultados para ver los resultados detallados de la ejecución:
-
Informe:
Proporciona un resumen completo de todas las comprobaciones realizadas, incluido el estado del clúster de Amazon EKS, la configuración del controlador del balanceador de carga de las aplicaciones, la configuración de IRSA, los requisitos de subred, los límites del balanceador de carga, ingress/service las anotaciones, las etiquetas de los grupos de seguridad de los nodos de trabajo y los registros del controlador del balanceador de carga de las aplicaciones. También incluye los problemas identificados y los pasos de solución recomendados.
-
Referencias
Automatización de Systems Manager
Documentación relacionada con el controlador AWS Load Balancer