As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
AWSSupport-TroubleshootEKSNetwork
Description
O AWSSupport-TroubleshootEKSNetwork runbook ajuda você a solucionar problemas de conectividade de rede em contêineres executados em clusters do Amazon Elastic Kubernetes Service (Amazon EKS). O runbook coleta estatísticas de computação e rede da origem e do destino do tráfego, dependendo do tipo de destino.
Como funciona
Use esse runbook para solucionar problemas de conectividade com os seguintes tipos de destino:
POD: Outro Kubernetes pod.
SERVIÇO: Um Kubernetes serviço.
IP: um IPv4/IPv6 endereço, interno ou externo ao cluster ou ao Amazon VPC.
DNS: um nome de domínio, interno ou externo ao cluster ou ao Amazon VPC.
Importante
Além das seguintes permissões do IAM, eles AutomationAssumeRole devem ter acesso aos clusters do Amazon EKS usando os métodos de acesso da API Amazon EKS compatíveis. Para clusters que usam entradas de acesso, a política de AmazonEKSViewPolicy acesso é a política mínima exigida.
Execute esta automação (console)
Permissões obrigatórias do IAM
O parâmetro AutomationAssumeRole requer as seguintes ações para usar o runbook com êxito.
Esse runbook executa os runbooks AWSSupport-SetupK8sApiProxyForEKS AWSSupport-CollectEKSLinuxNodeStatistics secundários e os runbooks sob a mesma função. Você AutomationAssumeRole deve permitir as seguintes ações para os runbooks para pais e filhos:
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
O exemplo de política a seguir mostra as permissões de menor privilégio necessárias para o. AutomationAssumeRole Substitua REGION ACCOUNTIDSOURCE_CLUSTER_NAME,DESTINATION_CLUSTER_NAME,, e S3_BUCKET_NAME por seus próprios 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": "*" } ] }
Além do exemplo de política anterior, que fornece permissões AWSSupport-TroubleshootEKSNetwork somente para, você precisa de políticas adicionais para as execuções do runbook secundário de e. AWSSupport-SetupK8sApiProxyForEKS AWSSupport-CollectEKSLinuxNodeStatistics Os exemplos de políticas a seguir se aplicam a esses documentos:
Permissões necessárias 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" } ] }
Permissões necessárias 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": "*" } ] }
Instruções
-
Abra
AWSSupport-TroubleshootEKSNetworkno Systems Manager em Documentos. -
Escolha Execute automation.
-
Para os parâmetros de entrada, insira o seguinte:
-
AutomationAssumeRole (Opcional):
O ARN da função do IAM que permite que o Systems Manager Automation execute as ações em seu nome. Se nenhuma função for especificada, o Systems Manager Automation usará suas permissões para executar esse runbook.
-
S3BucketName (Obrigatório):
Nome do bucket do Amazon S3 para fazer o upload de ativos de solução de problemas.
-
SourceClusterName (Obrigatório):
Nome do cluster Amazon EKS de origem a ser solucionado.
-
SourcePodName (Obrigatório):
Nome do Kubernetes pod de origem que está iniciando a conexão de rede.
-
SourcePodNamespace (Obrigatório):
Namespace em que o Kubernetes pod de origem reside.
-
DestinationType (Obrigatório):
Tipo de destino da conexão de rede. Valores válidos:
POD,SERVICE,IPouDNS. -
ConnectionProtocol (Obrigatório):
Protocolo para conexão de rede. Valores válidos:
tcp,udpousctp. -
DestinationPort (Obrigatório):
A porta de destino da conexão de rede.
-
DestinationClusterName (Opcional):
O nome do cluster Amazon EKS de destino (necessário para os tipos de destino POD e SERVICE).
-
DestinationPodName (Opcional):
O nome do Kubernetes pod de destino (necessário para o tipo de destino do POD).
-
DestinationPodNamespace (Opcional):
Namespace em que o Kubernetes pod de destino reside (necessário para o tipo de destino do POD).
-
DestinationServiceName (Opcional):
O nome do Kubernetes serviço de destino (necessário para o tipo de destino do SERVIÇO).
-
DestinationServiceNamespace (Opcional):
Namespace em que o Kubernetes serviço de destino reside (necessário para o tipo de destino do SERVIÇO).
-
DestinationIpAddress (Opcional):
Endereço IPv4 ou IPv6 de destino (necessário para o tipo de destino IP).
-
DestinationDnsName (Opcional):
Nome DNS de destino (necessário para o tipo de destino DNS).
-
-
Clique em Executar.
-
A automação começa. Monitore o status da execução na guia Execuções.
-
O documento executa as seguintes etapas automaticamente:
-
ValidateTroubleshootingParameters:Verifica os parâmetros de entrada necessários para a solução de problemas, como se o cluster existe.
-
SetupAuthProxyForSourceEKSCluster:Executa o
AWSSupport-SetupK8sApiProxyForEKSdocumento para configurar uma função do Lambda para fazer chamadas de API do Amazon EKS no cluster de origem do Amazon EKS. -
BranchOnDestinationProxySetupRequired:Determina se deve ser executado
SetupK8sApiProxyForEKSem um cluster de destino com base no tipo de destino. -
SetupAuthProxyForDestinationEKSCluster:Se necessário, executa o
AWSSupport-SetupK8sApiProxyForEKSdocumento para configurar uma função do Lambda para o cluster Amazon EKS de destino. -
CollectSourcePodData:Coleta e valida as informações do pod de origem.
-
BranchOnSourcePodComputeEngine:Determina se o Kubernetes pod de origem é executado no Amazon EC2 para coletar estatísticas do Linux para o nó.
-
CollectSourceLinuxNodeStatistics:Se o pod de origem for executado no Amazon EC2, executa o
AWSSupport-CollectEKSLinuxNodeStatisticsdocumento para obter estatísticas do Linux no nó do Kubernetes pod de origem. -
CollectDestinationData:Coleta e valida as informações de destino.
-
BranchOnDestinationResults:Determina se o Kubernetes pod de destino é executado no Amazon EC2 para coletar estatísticas do Linux para o nó.
-
CollectDestinationLinuxNodeStatistics:Se o pod de destino for executado no Amazon EC2, executa o
AWSSupport-CollectEKSLinuxNodeStatisticsdocumento para obter estatísticas do Linux no nó Amazon EKS de destino. -
CleanupAuthProxyForSourceEKSCluster:Executa o
AWSSupport-SetupK8sApiProxyForEKSdocumento usando a operação Cleanup para limpar os recursos criados para o cluster de origem. -
CleanupAuthProxyForDestinationEKSCluster:Se aplicável, executa o
AWSSupport-SetupK8sApiProxyForEKSdocumento usando a operação Cleanup para limpar os recursos criados para o cluster de destino. -
GenerateReport:Gera um relatório para o fluxo de solução de problemas.
-
-
Depois que a automação for concluída, revise a seção Saídas para ver os resultados da execução.
Referências
Automação do Systems Manager
Para obter mais informações, consulte Executar uma automação.
Para obter mais informações, consulte Configurar automação.
Para obter mais informações, consulte Fluxos de trabalho de automação de https://aws.amazon.com/premiumsupport/technology/saw/
suporte.