Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWSSupport-TroubleshootEKSNetwork
Deskripsi
AWSSupport-TroubleshootEKSNetworkRunbook membantu Anda memecahkan masalah konektivitas jaringan dalam wadah yang berjalan di cluster Amazon Elastic Kubernetes Service (Amazon EKS). Runbook mengumpulkan statistik komputasi dan jaringan dari sumber lalu lintas dan tujuan, tergantung pada jenis tujuan.
Cara kerjanya
Gunakan runbook ini untuk memecahkan masalah konektivitas ke jenis tujuan berikut:
POD: Kubernetes Pod lain.
LAYANAN: Sebuah Kubernetes layanan.
IP: IPv4/IPv6 Alamat, internal atau eksternal ke cluster atau Amazon VPC.
DNS: Nama domain, internal atau eksternal ke cluster atau Amazon VPC.
penting
Selain izin IAM berikut, AutomationAssumeRole harus memiliki akses ke cluster Amazon EKS menggunakan metode akses API Amazon EKS yang didukung. Untuk cluster yang menggunakan entri akses, kebijakan AmazonEKSViewPolicy akses adalah kebijakan minimum yang diperlukan.
Jalankan Otomatisasi ini (konsol)
Izin IAM yang diperlukan
AutomationAssumeRoleParameter memerlukan tindakan berikut untuk menggunakan runbook dengan sukses.
Runbook ini menjalankan runbook AWSSupport-CollectEKSLinuxNodeStatistics anak di bawah peran yang sama. AWSSupport-SetupK8sApiProxyForEKS Anda AutomationAssumeRole harus mengizinkan tindakan berikut untuk runbook induk dan anak:
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
Kebijakan contoh berikut menunjukkan izin hak istimewa terkecil yang diperlukan untuk. AutomationAssumeRole GantiREGION,ACCOUNTID,SOURCE_CLUSTER_NAME,DESTINATION_CLUSTER_NAME, dan S3_BUCKET_NAME dengan nilai-nilai Anda sendiri:
{ "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": "*" } ] }
Selain kebijakan contoh sebelumnya, yang menyediakan izin AWSSupport-TroubleshootEKSNetwork hanya untuk, Anda memerlukan kebijakan tambahan untuk eksekusi runbook turunan AWSSupport-SetupK8sApiProxyForEKS dan. AWSSupport-CollectEKSLinuxNodeStatistics Kebijakan contoh berikut berlaku untuk dokumen-dokumen ini:
Izin diperlukan untukAWSSupport-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" } ] }
Izin diperlukan untukAWSSupport-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": "*" } ] }
Petunjuk
-
Buka
AWSSupport-TroubleshootEKSNetworkdi Manajer Sistem di bawah Dokumen. -
Pilih Eksekusi otomatisasi.
-
Untuk parameter input, masukkan yang berikut ini:
-
AutomationAssumeRole (Opsional):
ARN dari peran IAM yang memungkinkan Otomasi Manajer Sistem untuk melakukan tindakan atas nama Anda. Jika tidak ada peran yang ditentukan, Sistem Manajer Otomasi menggunakan izin Anda untuk menjalankan runbook ini.
-
S3BucketName (Diperlukan):
Nama bucket Amazon S3 untuk mengunggah aset pemecahan masalah.
-
SourceClusterName (Diperlukan):
Nama sumber cluster Amazon EKS untuk memecahkan masalah.
-
SourcePodName (Diperlukan):
Nama Kubernetes pod sumber yang memulai koneksi jaringan.
-
SourcePodNamespace (Diperlukan):
Namespace tempat Kubernetes pod sumber berada.
-
DestinationType (Diperlukan):
Jenis tujuan koneksi jaringan. Nilai yang valid:
POD,SERVICE,IP, atauDNS. -
ConnectionProtocol (Diperlukan):
Protokol untuk koneksi jaringan. Nilai yang valid:
tcp,udp, atausctp. -
DestinationPort (Diperlukan):
Port tujuan koneksi jaringan.
-
DestinationClusterName (Opsional):
Nama cluster Amazon EKS tujuan (diperlukan untuk tipe tujuan POD dan SERVICE).
-
DestinationPodName (Opsional):
Nama Kubernetes pod tujuan (diperlukan untuk tipe tujuan POD).
-
DestinationPodNamespace (Opsional):
Namespace tempat Kubernetes pod tujuan berada (diperlukan untuk tipe tujuan POD).
-
DestinationServiceName (Opsional):
Nama Kubernetes layanan tujuan (diperlukan untuk jenis tujuan LAYANAN).
-
DestinationServiceNamespace (Opsional):
Namespace tempat Kubernetes layanan tujuan berada (diperlukan untuk jenis tujuan LAYANAN).
-
DestinationIpAddress (Opsional):
Alamat IPv4 atau IPv6 tujuan (diperlukan untuk jenis tujuan IP).
-
DestinationDnsName (Opsional):
Nama DNS tujuan (diperlukan untuk tipe tujuan DNS).
-
-
Pilih Eksekusi.
-
Otomatisasi dimulai. Pantau status eksekusi pada tab Ek sekusi.
-
Dokumen melakukan langkah-langkah berikut secara otomatis:
-
ValidateTroubleshootingParameters:Memverifikasi parameter input yang diperlukan untuk pemecahan masalah, seperti apakah cluster ada.
-
SetupAuthProxyForSourceEKSCluster:Menjalankan
AWSSupport-SetupK8sApiProxyForEKSdokumen untuk menyiapkan fungsi Lambda untuk membuat panggilan API Amazon EKS pada cluster Amazon EKS sumber. -
BranchOnDestinationProxySetupRequired:Menentukan apakah akan
SetupK8sApiProxyForEKSdijalankan untuk kluster tujuan berdasarkan jenis tujuan. -
SetupAuthProxyForDestinationEKSCluster:Jika diperlukan, jalankan
AWSSupport-SetupK8sApiProxyForEKSdokumen untuk mengatur fungsi Lambda untuk cluster Amazon EKS tujuan. -
CollectSourcePodData:Mengumpulkan dan memvalidasi informasi pod sumber.
-
BranchOnSourcePodComputeEngine:Cabang tentang apakah Kubernetes pod sumber berjalan di Amazon EC2 untuk mengumpulkan statistik Linux untuk node.
-
CollectSourceLinuxNodeStatistics:Jika pod sumber berjalan di Amazon EC2, jalankan
AWSSupport-CollectEKSLinuxNodeStatisticsdokumen untuk mengambil statistik Linux dari node Kubernetes pod sumber. -
CollectDestinationData:Mengumpulkan dan memvalidasi informasi tujuan.
-
BranchOnDestinationResults:Cabang tentang apakah Kubernetes pod tujuan berjalan di Amazon EC2 untuk mengumpulkan statistik Linux untuk node.
-
CollectDestinationLinuxNodeStatistics:Jika pod tujuan berjalan di Amazon EC2, jalankan
AWSSupport-CollectEKSLinuxNodeStatisticsdokumen untuk mengambil statistik Linux dari simpul Amazon EKS tujuan. -
CleanupAuthProxyForSourceEKSCluster:Menjalankan
AWSSupport-SetupK8sApiProxyForEKSdokumen menggunakan operasi Cleanup untuk membersihkan sumber daya yang dibuat untuk cluster sumber. -
CleanupAuthProxyForDestinationEKSCluster:Jika berlaku, jalankan
AWSSupport-SetupK8sApiProxyForEKSdokumen menggunakan operasi Pembersihan untuk membersihkan sumber daya yang dibuat untuk kluster tujuan. -
GenerateReport:Menghasilkan laporan untuk alur pemecahan masalah.
-
-
Setelah otomatisasi selesai, tinjau bagian Output untuk hasil eksekusi.
Referensi
Otomatisasi Systems Manager
Untuk informasi selengkapnya, lihat Menjalankan otomatisasi.
Untuk informasi selengkapnya, lihat Mengatur Otomatisasi.
Untuk informasi selengkapnya, lihat Men dukung Alur Kerja Otomasi.