

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`
<a name="automation-awssupport-troubleshooteksnetwork"></a>

## Description (Descripción)
<a name="automation-awssupport-troubleshooteksnetwork-description"></a>

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
<a name="automation-awssupport-troubleshooteksnetwork-how-it-works"></a>

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. ](https://docs.aws.amazon.com//eks/latest/userguide/grant-k8s-access.html) 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)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootEKSNetwork) 

## Permisos de IAM necesarios
<a name="automation-awssupport-troubleshooteksnetwork-permissions"></a>

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. `AutomationAssumeRole`Debe permitir las siguientes acciones para los libros de correr principales y secundarios:
+ `cloudformation:CreateStack`
+ `cloudformation:DeleteStack`
+ `cloudformation:DescribeStackResources`
+ `cloudformation:DescribeStacks`
+ `cloudformation:UpdateStack`
+ `ec2:CreateNetworkInterface`
+ `ec2:DeleteNetworkInterface`
+ `ec2:DescribeInstances`
+ `ec2:DescribeNetworkInterfaces`
+ `ec2:DescribeRegions`
+ `ec2:DescribeRouteTables`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcPeeringConnections`
+ `ec2:DescribeVpcs`
+ `eks:DescribeCluster`
+ `eks:DescribeFargateProfile`
+ `iam:AttachRolePolicy`
+ `iam:CreateRole`
+ `iam:DeleteRole`
+ `iam:DeleteRolePolicy`
+ `iam:DetachRolePolicy`
+ `iam:GetRole`
+ `iam:PassRole`
+ `iam:PutRolePolicy`
+ `iam:TagRole`
+ `iam:UntagRole`
+ `lambda:CreateFunction`
+ `lambda:DeleteFunction`
+ `lambda:GetFunction`
+ `lambda:InvokeFunction`
+ `lambda:ListTags`
+ `lambda:TagResource`
+ `lambda:UntagResource`
+ `lambda:UpdateFunctionCode`
+ `lambda:UpdateFunctionConfiguration`
+ `logs:CreateLogGroup`
+ `logs:CreateLogStream`
+ `logs:DeleteLogGroup`
+ `logs:DescribeLogGroups`
+ `logs:DescribeLogStreams`
+ `logs:ListTagsForResource`
+ `logs:PutLogEvents`
+ `logs:PutRetentionPolicy`
+ `logs:TagResource`
+ `logs:UntagResource`
+ `s3:GetBucketLocation`
+ `s3:GetObject`
+ `s3:PutObject`
+ `ssm:DescribeAutomationExecutions`
+ `ssm:DescribeAutomationStepExecutions`
+ `ssm:DescribeDocument`
+ `ssm:DescribeInstanceInformation`
+ `ssm:GetAutomationExecution`
+ `ssm:GetCommandInvocation`
+ `ssm:GetDocument`
+ `ssm:ListCommands`
+ `ssm:SendCommand`
+ `ssm:StartAutomationExecution`
+ `sts:GetCallerIdentity`
+ `tag:GetResources`
+ `tag:TagResources`

El siguiente ejemplo de política muestra los permisos con menos privilegios necesarios para. `AutomationAssumeRole` Sustituya `REGION``ACCOUNTID`,, `SOURCE_CLUSTER_NAME``DESTINATION_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` y`AWSSupport-CollectEKSLinuxNodeStatistics`. Los siguientes ejemplos de políticas se aplican a estos documentos:

Se requieren permisos para`AWSSupport-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 para`AWSSupport-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
<a name="automation-awssupport-troubleshooteksnetwork-instructions"></a>

1. Abra [`AWSSupport-TroubleshootEKSNetwork`](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootEKSNetwork/description) en Systems Manager, en Documentos.

1. Elija **Ejecutar automatización**.

1. 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`, `IP` o `DNS`.
   + **ConnectionProtocol (Obligatorio): **

     Protocolo para la conexión de red. Valores válidos: `tcp`, `udp` o `sctp`.
   + **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).

1. Elija **Ejecutar**.

1. Se inicia la automatización. Supervise el estado de ejecución en la ** pestaña ** Ejecuciones.

1. 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-SetupK8sApiProxyForEKS` documento 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 `SetupK8sApiProxyForEKS` en un clúster de destino en función del tipo de destino.
   + **`SetupAuthProxyForDestinationEKSCluster`**:

     Si es necesario, ejecuta el `AWSSupport-SetupK8sApiProxyForEKS` documento 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-CollectEKSLinuxNodeStatistics` documento 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-CollectEKSLinuxNodeStatistics` documento para obtener las estadísticas de Linux del nodo Amazon EKS de destino.
   + **`CleanupAuthProxyForSourceEKSCluster`**:

     Ejecuta el `AWSSupport-SetupK8sApiProxyForEKS` documento mediante la operación de limpieza para limpiar los recursos creados para el clúster de origen.
   + **`CleanupAuthProxyForDestinationEKSCluster`**:

     Si procede, ejecuta el `AWSSupport-SetupK8sApiProxyForEKS` documento 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.

1. Una vez finalizada la automatización, revise la sección Salidas para ver los resultados de la ejecución.

## Referencias
<a name="automation-awssupport-troubleshooteksnetwork-references"></a>

Automatización de Systems Manager
+ Para obtener más información, consulte [ Ejecutar una automatización](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html).
+ Para obtener más información, consulte [ Configurar la automatización](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html).
+ Para obtener más información, consulte [ Support Automation Workflows](https://aws.amazon.com/premiumsupport/technology/saw/).