

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# `AWSSupport-TroubleshootEKSNetwork`
<a name="automation-awssupport-troubleshooteksnetwork"></a>

## Description
<a name="automation-awssupport-troubleshooteksnetwork-description"></a>

Le `AWSSupport-TroubleshootEKSNetwork` runbook vous aide à résoudre les problèmes de connectivité réseau dans les conteneurs exécutés dans des clusters Amazon Elastic Kubernetes Service (Amazon EKS). Le runbook collecte des statistiques de calcul et de réseau à partir de la source et de la destination du trafic, en fonction du type de destination.

## Comment ça marche
<a name="automation-awssupport-troubleshooteksnetwork-how-it-works"></a>

Utilisez ce runbook pour résoudre les problèmes de connectivité aux types de destinations suivants :
+ **POD ** : Un autre Kubernetes pod.
+ **SERVICE ** : Un Kubernetes service.
+ **IP ** : IPv4/IPv6 adresse interne ou externe au cluster ou à Amazon VPC.
+ **DNS ** : nom de domaine, interne ou externe au cluster ou à Amazon VPC.

**Important**  
Outre les autorisations IAM suivantes, ils AutomationAssumeRole doivent avoir accès aux clusters Amazon EKS à l'aide des méthodes [ d'accès à l'API Amazon EKS ](https://docs.aws.amazon.com//eks/latest/userguide/grant-k8s-access.html) prises en charge. Pour les clusters utilisant des entrées d'`AmazonEKSViewPolicy`accès, la politique d'accès est la politique minimale requise.

 [Exécutez cette automatisation (console) ](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootEKSNetwork) 

## Autorisations IAM requises
<a name="automation-awssupport-troubleshooteksnetwork-permissions"></a>

Le `AutomationAssumeRole` paramètre nécessite les actions suivantes pour utiliser correctement le runbook.

Ce runbook exécute les runbooks `AWSSupport-SetupK8sApiProxyForEKS` et les runbooks `AWSSupport-CollectEKSLinuxNodeStatistics` enfants sous le même rôle. Vous `AutomationAssumeRole` devez autoriser les actions suivantes pour les runbooks parent et enfant :
+ `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`

L'exemple de politique suivant montre les autorisations de moindre privilège requises pour le. `AutomationAssumeRole` Remplacez `REGION``ACCOUNTID`,`SOURCE_CLUSTER_NAME`,`DESTINATION_CLUSTER_NAME`, et `S3_BUCKET_NAME` par vos propres valeurs :

```
{
    "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": "*"
        }
    ]
}
```

Outre l'exemple de politique précédent, qui fournit des autorisations `AWSSupport-TroubleshootEKSNetwork` uniquement, vous avez besoin de politiques supplémentaires pour les exécutions de `AWSSupport-SetupK8sApiProxyForEKS` et `AWSSupport-CollectEKSLinuxNodeStatistics` dans le runbook enfant. Les exemples de politiques suivants s'appliquent à ces documents :

Autorisations requises pour `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"
        }
    ]
}
```

Autorisations requises pour `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": "*"
        }
    ]
}
```

## Instructions
<a name="automation-awssupport-troubleshooteksnetwork-instructions"></a>

1. Ouvrez [`AWSSupport-TroubleshootEKSNetwork`](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootEKSNetwork/description) dans Systems Manager sous Documents.

1. Choisissez **Execute automation (Exécuter l’automatisation)**.

1. Pour les paramètres d'entrée, entrez les informations suivantes :
   + **AutomationAssumeRole (Facultatif) : **

     L'ARN du rôle IAM qui permet à Systems Manager Automation d'effectuer les actions en votre nom. Si aucun rôle n'est spécifié, Systems Manager Automation utilise vos autorisations pour exécuter ce runbook.
   + **S3BucketName (Obligatoire) : **

     Nom du compartiment Amazon S3 pour le téléchargement des ressources de dépannage.
   + **SourceClusterName (Obligatoire) : **

     Nom du cluster Amazon EKS source à résoudre.
   + **SourcePodName (Obligatoire) : **

     Nom du Kubernetes pod source à l'origine de la connexion réseau.
   + **SourcePodNamespace (Obligatoire) : **

     Espace de noms dans lequel se trouve le Kubernetes pod source.
   + **DestinationType (Obligatoire) : **

     Type de destination de connexion réseau. Valeurs valides : `POD`, `SERVICE`, `IP` ou `DNS`.
   + **ConnectionProtocol (Obligatoire) : **

     Protocole de connexion réseau. Valeurs valides : `tcp`, `udp` ou `sctp`.
   + **DestinationPort (Obligatoire) : **

     Port de destination de la connexion réseau.
   + **DestinationClusterName (Facultatif) : **

     Le nom du cluster Amazon EKS de destination (obligatoire pour les types de destination POD et SERVICE).
   + **DestinationPodName (Facultatif) : **

     Le nom du Kubernetes pod de destination (obligatoire pour le type de destination du POD).
   + **DestinationPodNamespace (Facultatif) : **

     Espace de noms où se trouve le Kubernetes pod de destination (obligatoire pour le type de destination du POD).
   + **DestinationServiceName (Facultatif) : **

     Le nom du Kubernetes service de destination (obligatoire pour le type de destination SERVICE).
   + **DestinationServiceNamespace (Facultatif) : **

     Espace de noms où réside le Kubernetes service de destination (obligatoire pour le type de destination SERVICE).
   + **DestinationIpAddress (Facultatif) : **

     Adresse IPv4 ou IPv6 de destination (obligatoire pour le type de destination IP).
   + **DestinationDnsName (Facultatif) : **

     Nom DNS de destination (obligatoire pour le type de destination DNS).

1. Sélectionnez **Execute (Exécuter)**.

1. L'automatisation démarre. Surveillez l'état d'exécution dans l'**onglet ** Exécutions.

1. Le document exécute automatiquement les étapes suivantes :
   + **`ValidateTroubleshootingParameters`**:

     Vérifie les paramètres d'entrée requis pour le dépannage, par exemple si le cluster existe.
   + **`SetupAuthProxyForSourceEKSCluster`**:

     Exécute le `AWSSupport-SetupK8sApiProxyForEKS` document pour configurer une fonction Lambda pour effectuer des appels d'API Amazon EKS sur le cluster Amazon EKS source.
   + **`BranchOnDestinationProxySetupRequired`**:

     Détermine s'il faut exécuter `SetupK8sApiProxyForEKS` pour un cluster de destination en fonction du type de destination.
   + **`SetupAuthProxyForDestinationEKSCluster`**:

     Si nécessaire, exécute le `AWSSupport-SetupK8sApiProxyForEKS` document pour configurer une fonction Lambda pour le cluster Amazon EKS de destination.
   + **`CollectSourcePodData`**:

     Collecte et valide les informations du module source.
   + **`BranchOnSourcePodComputeEngine`**:

     Branches indiquant si le Kubernetes pod source s'exécute sur Amazon EC2 afin de collecter des statistiques Linux pour le nœud.
   + **`CollectSourceLinuxNodeStatistics`**:

     Si le module source s'exécute sur Amazon EC2, exécute le `AWSSupport-CollectEKSLinuxNodeStatistics` document pour récupérer les statistiques Linux depuis le nœud du Kubernetes module source.
   + **`CollectDestinationData`**:

     Collecte et valide les informations de destination.
   + **`BranchOnDestinationResults`**:

     Branches indiquant si le Kubernetes pod de destination s'exécute sur Amazon EC2 afin de collecter des statistiques Linux pour le nœud.
   + **`CollectDestinationLinuxNodeStatistics`**:

     Si le module de destination s'exécute sur Amazon EC2, exécute le `AWSSupport-CollectEKSLinuxNodeStatistics` document pour récupérer les statistiques Linux depuis le nœud Amazon EKS de destination.
   + **`CleanupAuthProxyForSourceEKSCluster`**:

     Exécute le `AWSSupport-SetupK8sApiProxyForEKS` document à l'aide de l'opération de nettoyage pour nettoyer les ressources créées pour le cluster source.
   + **`CleanupAuthProxyForDestinationEKSCluster`**:

     Le cas échéant, exécute le `AWSSupport-SetupK8sApiProxyForEKS` document à l'aide de l'opération de nettoyage pour nettoyer les ressources créées pour le cluster de destination.
   + **`GenerateReport`**:

     Génère un rapport pour le flux de dépannage.

1. Une fois l'automatisation terminée, consultez la section Sorties pour connaître les résultats de l'exécution.

## Références
<a name="automation-awssupport-troubleshooteksnetwork-references"></a>

Systems Manager Automation
+ Pour plus d'informations, voir [ Exécuter une automatisation](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html).
+ Pour plus d'informations, voir [ Configurer l'automatisation](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html).
+ Pour plus d'informations, consultez la section Workflows d'automatisation du [ support](https://aws.amazon.com/premiumsupport/technology/saw/).