기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWSSupport-TroubleshootEKSNetwork
설명
AWSSupport-TroubleshootEKSNetwork 실행서는 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터에서 실행되는 컨테이너의 네트워크 연결 문제를 해결하는 데 도움이 됩니다. 실행서는 대상 유형에 따라 트래픽 소스 및 대상에서 컴퓨팅 및 네트워킹 통계를 수집합니다.
작동 방식
이 실행서를 사용하여 다음 대상 유형에 대한 연결 문제를 해결합니다.
POD: 다른 Kubernetes 포드.
서비스: Kubernetes 서비스입니다.
IP: 클러스터 또는 Amazon VPC 내부 또는 외부의 IPv4/IPv6 주소입니다.
DNS: 클러스터 또는 Amazon VPC 내부 또는 외부의 도메인 이름입니다.
중요
다음 IAM 권한 외에도 AutomationAssumeRole은 지원되는 Amazon EKS API 액세스 방법을 사용하여 Amazon EKS 클러스터에 액세스할 수 있어야 합니다. 액세스 항목을 사용하는 클러스터의 경우 AmazonEKSViewPolicy 액세스 정책은 최소 필수 정책입니다.
필수 IAM 권한
실행서를 성공적으로 사용하려면 AutomationAssumeRole 파라미터에 다음 작업이 필요합니다.
이 런북은 동일한 역할로 AWSSupport-SetupK8sApiProxyForEKS 및 AWSSupport-CollectEKSLinuxNodeStatistics 하위 런북을 실행합니다. 는 상위 및 하위 실행서에 대해 다음 작업을 허용AutomationAssumeRole해야 합니다.
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
다음 예제 정책은에 필요한 최소 권한 권한을 보여줍니다AutomationAssumeRole. REGION, ACCOUNTID, DESTINATION_CLUSTER_NAME, 및 SOURCE_CLUSTER_NAMES3_BUCKET_NAME를 자체 값으로 바꿉니다.
{ "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": "*" } ] }
에 대한 권한AWSSupport-TroubleshootEKSNetwork만 제공하는 이전 예제 정책 외에도 AWSSupport-SetupK8sApiProxyForEKS 및의 하위 런북 실행에 대한 추가 정책이 필요합니다AWSSupport-CollectEKSLinuxNodeStatistics. 다음 예제 정책은 이러한 문서에 적용됩니다.
에 필요한 권한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" } ] }
에 필요한 권한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": "*" } ] }
지침
-
Systems Manager
AWSSupport-TroubleshootEKSNetwork의 Documents에서를 엽니다. -
자동화 실행(Execute automation)을 선택합니다.
-
입력 파라미터에 다음을 입력합니다.
-
AutomationAssumeRole(선택 사항):
Systems Manager Automation이 사용자를 대신하여 작업을 수행할 수 있도록 허용하는 IAM 역할의 ARN입니다. 역할이 지정되지 않은 경우 Systems Manager Automation은 권한을 사용하여이 실행서를 실행합니다.
-
S3BucketName(필수):
문제 해결 자산을 업로드하기 위한 Amazon S3 버킷 이름입니다.
-
SourceClusterName(필수):
문제를 해결할 소스 Amazon EKS 클러스터의 이름입니다.
-
SourcePodName(필수):
네트워크 연결을 시작하는 소스 Kubernetes 포드의 이름입니다.
-
SourcePodNamespace(필수):
소스 Kubernetes 포드가 있는 네임스페이스입니다.
-
DestinationType(필수):
네트워크 연결 대상의 유형입니다. 유효한 값은
POD,SERVICE,IP또는DNS입니다. -
ConnectionProtocol(필수):
네트워크 연결을 위한 프로토콜입니다. 유효한 값:
tcp,udp또는sctp. -
DestinationPort(필수):
네트워크 연결 대상의 포트입니다.
-
DestinationClusterName(선택 사항):
대상 Amazon EKS 클러스터 이름(POD 및 서비스 대상 유형에 필요).
-
DestinationPodName(선택 사항):
대상 Kubernetes 포드의 이름입니다(POD 대상 유형에 필요).
-
DestinationPodNamespace(선택 사항):
대상 Kubernetes 포드가 있는 네임스페이스(POD 대상 유형에 필요).
-
DestinationServiceName(선택 사항):
대상 Kubernetes 서비스의 이름입니다(서비스 대상 유형에 필수).
-
DestinationServiceNamespace(선택 사항):
대상 Kubernetes 서비스가 있는 네임스페이스(서비스 대상 유형에 필요).
-
DestinationIpAddress(선택 사항):
대상 IPv4 또는 IPv6 주소(IP 대상 유형에 필요).
-
DestinationDnsName(선택 사항):
대상 DNS 이름(DNS 대상 유형에 필요).
-
-
실행을 선택합니다.
-
자동화가 시작됩니다. 실행 탭에서 실행 상태를 모니터링합니다.
-
문서는 다음 단계를 자동으로 수행합니다.
-
ValidateTroubleshootingParameters:클러스터 존재 여부와 같은 문제 해결에 필요한 입력 파라미터를 확인합니다.
-
SetupAuthProxyForSourceEKSCluster:AWSSupport-SetupK8sApiProxyForEKS문서를 실행하여 소스 Amazon EKS 클러스터에서 Amazon EKS API를 호출하도록 Lambda 함수를 설정합니다. -
BranchOnDestinationProxySetupRequired:대상 유형에 따라 대상 클러스터에
SetupK8sApiProxyForEKS대해를 실행할지 여부를 결정합니다. -
SetupAuthProxyForDestinationEKSCluster:필요한 경우는
AWSSupport-SetupK8sApiProxyForEKS문서를 실행하여 대상 Amazon EKS 클러스터에 대한 Lambda 함수를 설정합니다. -
CollectSourcePodData:소스 포드의 정보를 수집하고 검증합니다.
-
BranchOnSourcePodComputeEngine:소스 Kubernetes 포드가 Amazon EC2에서 실행되어 노드에 대한 Linux 통계를 수집하는지 여부를 분기합니다.
-
CollectSourceLinuxNodeStatistics:소스 포드가 Amazon EC2에서 실행되는 경우는
AWSSupport-CollectEKSLinuxNodeStatistics문서를 실행하여 소스 Kubernetes 포드의 노드에서 Linux 통계를 가져옵니다. -
CollectDestinationData:대상 정보를 수집하고 검증합니다.
-
BranchOnDestinationResults:대상 Kubernetes 포드가 Amazon EC2에서 실행되어 노드에 대한 Linux 통계를 수집하는지 여부를 분기합니다.
-
CollectDestinationLinuxNodeStatistics:대상 포드가 Amazon EC2에서 실행되는 경우는
AWSSupport-CollectEKSLinuxNodeStatistics문서를 실행하여 대상 Amazon EKS 노드에서 Linux 통계를 가져옵니다. -
CleanupAuthProxyForSourceEKSCluster:정리 작업을 사용하여
AWSSupport-SetupK8sApiProxyForEKS문서를 실행하여 소스 클러스터에 대해 생성된 리소스를 정리합니다. -
CleanupAuthProxyForDestinationEKSCluster:해당하는 경우는 정리 작업을 사용하여
AWSSupport-SetupK8sApiProxyForEKS문서를 실행하여 대상 클러스터에 대해 생성된 리소스를 정리합니다. -
GenerateReport:문제 해결 흐름에 대한 보고서를 생성합니다.
-
-
자동화가 완료되면 출력 섹션에서 실행 결과를 검토합니다.
참조
Systems Manager Automation
자세한 내용은 자동화 실행을 참조하세요.
자세한 내용은 자동화 설정을 참조하세요.
자세한 내용은 자동화 워크플로 지원을 참조하세요
.