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-TroubleshootEKSNetwork
Description (Descripción)
El AWSSupport-TroubleshootEKSNetwork manual le ayuda a solucionar problemas de conectividad de red en contenedores que se ejecutan en clústeres de Amazon Elastic Kubernetes Service (Amazon EKS). El manual recopila estadísticas informáticas y de red de la fuente y el destino del tráfico, según el tipo de destino.
Funcionamiento
Utilice este manual para solucionar problemas de conectividad con los siguientes tipos de destino:
POD: Otro Kubernetes pod.
SERVICIO: Un Kubernetes servicio.
IP: una IPv4/IPv6 dirección, interna o externa al clúster o a Amazon VPC.
DNS: un nombre de dominio, interno o externo al clúster o a Amazon VPC.
importante
Además de los siguientes permisos de IAM, AutomationAssumeRole deben tener acceso a los clústeres de Amazon EKS mediante los métodos de acceso de la API de Amazon EKS compatibles. En el caso de los clústeres que utilizan entradas de AmazonEKSViewPolicy acceso, la política de acceso es la política mínima requerida.
Ejecuta esta automatización (consola)
Permisos de IAM necesarios
El parámetro AutomationAssumeRole requiere las siguientes acciones para utilizar el manual de procedimientos correctamente.
Este manual ejecuta los libros de ejecución AWSSupport-SetupK8sApiProxyForEKS y los AWSSupport-CollectEKSLinuxNodeStatistics secundarios con la misma función. AutomationAssumeRoleDebe permitir las siguientes acciones para los libros de correr principales y secundarios:
cloudformation:CreateStackcloudformation:DeleteStackcloudformation:DescribeStackResourcescloudformation:DescribeStackscloudformation:UpdateStackec2:CreateNetworkInterfaceec2:DeleteNetworkInterfaceec2:DescribeInstancesec2:DescribeNetworkInterfacesec2:DescribeRegionsec2:DescribeRouteTablesec2:DescribeSecurityGroupsec2:DescribeSubnetsec2:DescribeVpcPeeringConnectionsec2:DescribeVpcseks:DescribeClustereks:DescribeFargateProfileiam:AttachRolePolicyiam:CreateRoleiam:DeleteRoleiam:DeleteRolePolicyiam:DetachRolePolicyiam:GetRoleiam:PassRoleiam:PutRolePolicyiam:TagRoleiam:UntagRolelambda:CreateFunctionlambda:DeleteFunctionlambda:GetFunctionlambda:InvokeFunctionlambda:ListTagslambda:TagResourcelambda:UntagResourcelambda:UpdateFunctionCodelambda:UpdateFunctionConfigurationlogs:CreateLogGrouplogs:CreateLogStreamlogs:DeleteLogGrouplogs:DescribeLogGroupslogs:DescribeLogStreamslogs:ListTagsForResourcelogs:PutLogEventslogs:PutRetentionPolicylogs:TagResourcelogs:UntagResources3:GetBucketLocations3:GetObjects3:PutObjectssm:DescribeAutomationExecutionsssm:DescribeAutomationStepExecutionsssm:DescribeDocumentssm:DescribeInstanceInformationssm:GetAutomationExecutionssm:GetCommandInvocationssm:GetDocumentssm:ListCommandsssm:SendCommandssm:StartAutomationExecutionsts:GetCallerIdentitytag:GetResourcestag:TagResources
El siguiente ejemplo de política muestra los permisos con menos privilegios necesarios para. AutomationAssumeRole Sustituya REGIONACCOUNTID,, SOURCE_CLUSTER_NAMEDESTINATION_CLUSTER_NAME, y por sus S3_BUCKET_NAME propios valores:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EKSClusterAccess", "Effect": "Allow", "Action": "eks:DescribeCluster", "Resource": [ "arn:aws:eks:REGION:ACCOUNTID:cluster/SOURCE_CLUSTER_NAME", "arn:aws:eks:REGION:ACCOUNTID:cluster/DESTINATION_CLUSTER_NAME" ] }, { "Sid": "EKSFargateProfileAccess", "Effect": "Allow", "Action": "eks:DescribeFargateProfile", "Resource": [ "arn:aws:eks:REGION:ACCOUNTID:fargateprofile/SOURCE_CLUSTER_NAME/*", "arn:aws:eks:REGION:ACCOUNTID:fargateprofile/DESTINATION_CLUSTER_NAME/*" ] }, { "Sid": "EC2DescribePermissions", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeRegions", "ec2:DescribeRouteTables", "ec2:DescribeVpcs", "ec2:DescribeVpcPeeringConnections", "ec2:DescribeSubnets" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "REGION" } } }, { "Sid": "SSMAutomationExecution", "Effect": "Allow", "Action": [ "ssm:StartAutomationExecution", "ssm:GetAutomationExecution", "ssm:DescribeAutomationExecutions", "ssm:DescribeAutomationStepExecutions" ], "Resource": "arn:aws:ssm:REGION:ACCOUNTID:automation-execution/*" }, { "Sid": "SSMDocumentAccess", "Effect": "Allow", "Action": [ "ssm:DescribeDocument", "ssm:GetDocument" ], "Resource": [ "arn:aws:ssm:REGION:ACCOUNTID:document/AWSSupport-TroubleshootEKSNetwork", "arn:aws:ssm:REGION:ACCOUNTID:document/AWSSupport-SetupK8sApiProxyForEKS", "arn:aws:ssm:REGION:ACCOUNTID:document/AWSSupport-CollectEKSLinuxNodeStatistics", "arn:aws:ssm:REGION:*:document/AWS-RunShellScript" ] }, { "Sid": "SSMRunCommandOnNodes", "Effect": "Allow", "Action": [ "ssm:SendCommand", "ssm:GetCommandInvocation" ], "Resource": [ "arn:aws:ec2:REGION:ACCOUNTID:instance/*", "arn:aws:ssm:REGION:*:document/AWS-RunShellScript" ], "Condition": { "StringEquals": { "aws:ResourceTag/eks:cluster-name": [ "SOURCE_CLUSTER_NAME", "DESTINATION_CLUSTER_NAME" ] } } }, { "Sid": "S3TroubleshootingAssets", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::S3_BUCKET_NAME/AWSSupport-CollectEKSLinuxNodeStatistics/*" }, { "Sid": "S3BucketLocation", "Effect": "Allow", "Action": "s3:GetBucketLocation", "Resource": "arn:aws:s3:::S3_BUCKET_NAME" }, { "Sid": "LambdaK8sProxyManagement", "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:GetFunction", "lambda:InvokeFunction", "lambda:UpdateFunctionCode", "lambda:UpdateFunctionConfiguration" ], "Resource": "arn:aws:lambda:REGION:ACCOUNTID:function:Automation-K8sProxy-*" }, { "Sid": "CloudFormationK8sProxyStack", "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStacks", "cloudformation:DescribeStackResources" ], "Resource": "arn:aws:cloudformation:REGION:ACCOUNTID:stack/AWSSupport-SetupK8sApiProxyForEKS-*/*" }, { "Sid": "IAMForK8sProxyLambdaRole", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:DeleteRole", "iam:GetRole", "iam:AttachRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePolicy", "iam:DeleteRolePolicy" ], "Resource": "arn:aws:iam::ACCOUNTID:role/Automation-K8sProxy-Role-*" }, { "Sid": "IAMPassRoleToLambda", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::ACCOUNTID:role/Automation-K8sProxy-Role-*", "Condition": { "StringEquals": { "iam:PassedToService": "lambda.amazonaws.com" } } }, { "Sid": "CloudWatchLogsForK8sProxy", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DeleteLogGroup" ], "Resource": "arn:aws:logs:REGION:ACCOUNTID:log-group:/aws/lambda/Automation-K8sProxy-*" }, { "Sid": "ResourceTaggingForStackLookup", "Effect": "Allow", "Action": "tag:GetResources", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "REGION" } } }, { "Sid": "STSCallerIdentity", "Effect": "Allow", "Action": "sts:GetCallerIdentity", "Resource": "*" } ] }
Además de la política del ejemplo anterior, que AWSSupport-TroubleshootEKSNetwork solo proporciona permisos para, necesita políticas adicionales para las ejecuciones secundarias de AWSSupport-SetupK8sApiProxyForEKS yAWSSupport-CollectEKSLinuxNodeStatistics. Los siguientes ejemplos de políticas se aplican a estos documentos:
Se requieren permisos paraAWSSupport-SetupK8sApiProxyForEKS:
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "tag:GetResources", "tag:TagResources", "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "eks:DescribeCluster", "iam:GetRole", "cloudformation:DescribeStacks", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "lambda:GetFunction", "lambda:ListTags", "logs:ListTagsForResource" ], "Resource": "*", "Effect": "Allow", "Sid": "AllowActionsWithoutConditions" }, { "Condition": { "StringEquals": { "aws:RequestTag/AWSSupport-SetupK8sApiProxyForEKS": "true" } }, "Action": "iam:CreateRole", "Resource": [ "arn:aws:iam::ACCOUNTID:role/Automation-K8sProxy*" ], "Effect": "Allow", "Sid": "AllowCreateRoleWithRequiredTag" }, { "Condition": { "StringEquals": { "aws:ResourceTag/AWSSupport-SetupK8sApiProxyForEKS": "true" } }, "Action": [ "iam:DeleteRole", "iam:TagRole", "iam:UntagRole" ], "Resource": [ "arn:aws:iam::ACCOUNTID:role/Automation-K8sProxy*" ], "Effect": "Allow", "Sid": "IAMActions" }, { "Condition": { "StringEquals": { "aws:ResourceTag/AWSSupport-SetupK8sApiProxyForEKS": "true" }, "StringLike": { "iam:PolicyARN": [ "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", "arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole" ] } }, "Action": [ "iam:AttachRolePolicy", "iam:DetachRolePolicy" ], "Resource": [ "arn:aws:iam::ACCOUNTID:role/Automation-K8sProxy*" ], "Effect": "Allow", "Sid": "AttachRolePolicy" }, { "Condition": { "StringEquals": { "aws:ResourceTag/AWSSupport-SetupK8sApiProxyForEKS": "true" } }, "Action": [ "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:TagResource", "lambda:UntagResource", "lambda:UpdateFunctionCode" ], "Resource": "arn:aws:lambda:REGION:ACCOUNTID:function:Automation-K8sProxy*", "Effect": "Allow", "Sid": "LambdaActions" }, { "Condition": { "StringEquals": { "aws:ResourceTag/AWSSupport-SetupK8sApiProxyForEKS": "true" } }, "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:UpdateStack" ], "Resource": "arn:aws:cloudformation:REGION:ACCOUNTID:stack/AWSSupport-SetupK8sApiProxyForEKS*", "Effect": "Allow", "Sid": "CloudFormationActions" }, { "Condition": { "StringEquals": { "aws:ResourceTag/AWSSupport-SetupK8sApiProxyForEKS": "true" } }, "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:PutRetentionPolicy", "logs:TagResource", "logs:UntagResource" ], "Resource": [ "arn:aws:logs:REGION:ACCOUNTID:log-group:/aws/lambda/Automation-K8sProxy*", "arn:aws:logs:REGION:ACCOUNTID:log-group:/aws/lambda/Automation-K8sProxy*:*" ], "Effect": "Allow", "Sid": "LogsActions" }, { "Condition": { "StringLikeIfExists": { "iam:PassedToService": "lambda.amazonaws.com" } }, "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::ACCOUNTID:role/Automation-K8sProxy-Role*" ], "Effect": "Allow", "Sid": "PassRoleToLambda" } ] }
Permisos necesarios paraAWSSupport-CollectEKSLinuxNodeStatistics:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetAccountPublicAccessBlock" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetBucketPublicAccessBlock", "s3:GetBucketAcl", "s3:GetBucketPolicyStatus", "s3:GetBucketLocation", "s3:GetEncryptionConfiguration" ], "Resource": "arn:aws:s3:::S3_BUCKET_NAME" }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::S3_BUCKET_NAME/*" }, { "Effect": "Allow", "Action": [ "ssm:DescribeInstanceInformation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ssm:*:*:document/AWS-RunShellScript", "arn:aws:ec2:*:ACCOUNTID:instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:GetCommandInvocation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:DescribeInstances" ], "Resource": "*" } ] }
Instrucciones
-
Abra
AWSSupport-TroubleshootEKSNetworken Systems Manager, en Documentos. -
Elija Ejecutar automatización.
-
Para los parámetros de entrada, introduzca lo siguiente:
-
AutomationAssumeRole (Opcional):
El ARN del rol de IAM que permite a Systems Manager Automation realizar las acciones en su nombre. Si no se especifica ningún rol, Systems Manager Automation usa sus permisos para ejecutar este libro de ejecución.
-
S3BucketName (Obligatorio):
Nombre del bucket de Amazon S3 para cargar recursos de solución de problemas.
-
SourceClusterName (Obligatorio):
Nombre del clúster de Amazon EKS de origen para solucionar el problema.
-
SourcePodName (Obligatorio):
Nombre del Kubernetes pod de origen que inicia la conexión de red.
-
SourcePodNamespace (Obligatorio):
Espacio de nombres en el que reside el Kubernetes pod de origen.
-
DestinationType (Obligatorio):
Tipo de destino de la conexión de red. Valores válidos:
POD,SERVICE,IPoDNS. -
ConnectionProtocol (Obligatorio):
Protocolo para la conexión de red. Valores válidos:
tcp,udposctp. -
DestinationPort (Obligatorio):
El puerto de destino de la conexión de red.
-
DestinationClusterName (Opcional):
El nombre del clúster de Amazon EKS de destino (obligatorio para los tipos de destino POD y SERVICE).
-
DestinationPodName (Opcional):
El nombre del Kubernetes pod de destino (obligatorio para el tipo de destino del POD).
-
DestinationPodNamespace (Opcional):
Espacio de nombres en el que reside el Kubernetes pod de destino (obligatorio para el tipo de destino del POD).
-
DestinationServiceName (Opcional):
El nombre del Kubernetes servicio de destino (obligatorio para el tipo de destino del SERVICIO).
-
DestinationServiceNamespace (Opcional):
Espacio de nombres en el que reside el Kubernetes servicio de destino (obligatorio para el tipo de destino SERVICE).
-
DestinationIpAddress (Opcional):
Dirección IPv4 o IPv6 de destino (obligatoria para el tipo de destino IP).
-
DestinationDnsName (Opcional):
Nombre DNS de destino (obligatorio para el tipo de destino DNS).
-
-
Elija Ejecutar.
-
Se inicia la automatización. Supervise el estado de ejecución en la pestaña Ejecuciones.
-
El documento realiza los siguientes pasos automáticamente:
-
ValidateTroubleshootingParameters:Verifica los parámetros de entrada necesarios para solucionar problemas, por ejemplo, si el clúster existe.
-
SetupAuthProxyForSourceEKSCluster:Ejecuta el
AWSSupport-SetupK8sApiProxyForEKSdocumento para configurar una función de Lambda para realizar llamadas a la API de Amazon EKS en el clúster de Amazon EKS de origen. -
BranchOnDestinationProxySetupRequired:Determina si se debe ejecutar
SetupK8sApiProxyForEKSen un clúster de destino en función del tipo de destino. -
SetupAuthProxyForDestinationEKSCluster:Si es necesario, ejecuta el
AWSSupport-SetupK8sApiProxyForEKSdocumento para configurar una función Lambda para el clúster de Amazon EKS de destino. -
CollectSourcePodData:Recopila y valida la información del pod de origen.
-
BranchOnSourcePodComputeEngine:Depende de si el Kubernetes pod de origen se ejecuta en Amazon EC2 para recopilar estadísticas de Linux para el nodo.
-
CollectSourceLinuxNodeStatistics:Si el pod de origen se ejecuta en Amazon EC2, ejecuta el
AWSSupport-CollectEKSLinuxNodeStatisticsdocumento para obtener las estadísticas de Linux del nodo del Kubernetes pod de origen. -
CollectDestinationData:Recopila y valida la información de destino.
-
BranchOnDestinationResults:Depende de si el Kubernetes pod de destino se ejecuta en Amazon EC2 para recopilar estadísticas de Linux para el nodo.
-
CollectDestinationLinuxNodeStatistics:Si el pod de destino se ejecuta en Amazon EC2, ejecuta el
AWSSupport-CollectEKSLinuxNodeStatisticsdocumento para obtener las estadísticas de Linux del nodo Amazon EKS de destino. -
CleanupAuthProxyForSourceEKSCluster:Ejecuta el
AWSSupport-SetupK8sApiProxyForEKSdocumento mediante la operación de limpieza para limpiar los recursos creados para el clúster de origen. -
CleanupAuthProxyForDestinationEKSCluster:Si procede, ejecuta el
AWSSupport-SetupK8sApiProxyForEKSdocumento mediante la operación de limpieza para limpiar los recursos creados para el clúster de destino. -
GenerateReport:Genera un informe para el flujo de solución de problemas.
-
-
Una vez finalizada la automatización, revise la sección Salidas para ver los resultados de la ejecución.
Referencias
Automatización de Systems Manager
Para obtener más información, consulte Ejecutar una automatización.
Para obtener más información, consulte Configurar la automatización.
Para obtener más información, consulte Support Automation Workflows
.