기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWSSupport-TroubleshootEKSDNSFailure
설명
AWSSupport-TroubleshootEKSDNSFailure 실행서는 애플리케이션 또는 포드에 DNS 해결 실패가 발생할 때 Amazon Elastic Kubernetes Service(Amazon EKS)의 CoreDNS 포드 및 구성 문제를 해결하는 데 도움이 됩니다. 실행서는 VPC DNS 설정을 검증하고, CoreDNS 배포 및 ConfigMap을 검사하고, Horizontal Pod Autoscaler(HPA) 구성을 확인하고, CoreDNS 로그를 수집하고, 작업자 노드에서 DNS 확인 검사를 수행합니다. 선택적으로 문제가 있는 작업자 노드와 동일한 서브넷에 Amazon Elastic Compute Cloud 인스턴스를 검색하여 노드에 직접 액세스할 필요 없이 DNS 확인 검사를 수행할 수 있습니다.
중요
Amazon EKS 클러스터의 인증 모드는 API 또는 로 설정해야 합니다API_AND_CONFIG_MAP. 이 실행서는 AWS Lambda (Lambda) 함수를 프록시로 배포하여 인증된 Kubernetes API 호출을 수행하고 실행이 끝날 때 생성된 모든 리소스를 정리합니다.
문서 유형
자동화
소유자
Amazon
플랫폼
Linux, macOS, Windows
파라미터
-
AutomationAssumeRole
유형: AWS::IAM::Role::Arn
설명: (선택 사항) 사용자를 대신하여 Systems Manager Automation을 통해 작업을 수행할 수 있도록 허용하는 AWS Identity and Access Management (IAM) 역할의 Amazon 리소스 이름(ARN)입니다. 역할을 지정하지 않은 경우, Systems Manager Automation에서는 이 실행서를 시작하는 사용자의 권한을 사용합니다.
-
EksClusterName
유형: 문자열
설명: (필수) 대상 Amazon EKS 클러스터의 이름입니다.
-
DnsName
유형: 문자열
기본값: amazon.com
설명: (선택 사항) 애플리케이션 또는 포드가 확인하지 못한 도메인 이름의 스텁 도메인 접미사입니다.
-
ProblematicNodeInstanceId
유형: AWS::EC2::Instance::Id
설명: (선택 사항) DNS 확인 오류가 발생한 애플리케이션이 실행 중인 작업자 노드의 인스턴스 ID입니다. 제공된 경우 실행서는 동일한 서브넷에 탐색 Amazon EC2 인스턴스를 생성하여 DNS 확인 검사를 수행합니다. 작업자 노드가 퍼블릭 서브넷에 있지 않거나 작업자 노드
bind-utils에 설치가 허용되지 않는 경우이 파라미터를 사용합니다. -
CoreDnsNamespace
유형: 문자열
기본값: kube-system
설명: (선택 사항) CoreDNS 포드의 Kubernetes 네임스페이스입니다.
-
S3BucketName
유형: AWS::S3::Bucket::Name
설명: (선택 사항) CoreDNS 문제 해결 로그가 업로드되는 Amazon Simple Storage Service 버킷의 이름입니다.
-
LambdaRoleArn
유형: AWS::IAM::Role::Arn
설명: (선택 사항) Lambda 프록시 함수에 대한 IAM 역할의 ARN입니다. 제공되지 않은 경우 실행서는
AWSLambdaBasicExecutionRole및AWSLambdaVPCAccessExecutionRole관리형 정책을Automation-K8sProxy-Role-<ExecutionId>사용하여 라는 역할을 생성합니다. 자체 역할을 제공하는 것이 좋습니다.
필수 IAM 권한
실행서를 성공적으로 사용하려면 AutomationAssumeRole 파라미터에 다음 작업이 필요합니다.
-
eks:DescribeCluster -
ec2:DescribeVpcs -
ec2:DescribeInstances -
ec2:DescribeSubnets -
ec2:DescribeSecurityGroups -
cloudformation:CreateStack -
cloudformation:DescribeStacks -
cloudformation:DeleteStack -
lambda:InvokeFunction -
s3:GetBucketPublicAccessBlock -
s3:GetBucketAcl -
s3:PutObject -
ssm:DescribeInstanceInformation -
ssm:SendCommand -
ssm:GetCommandInvocation -
ssm:StartAutomationExecution -
ssm:GetAutomationExecution
문서 단계
-
AssertIfTargetClusterExists-에 지정된 Amazon EKS 클러스터가EksClusterName존재하고ACTIVE상태인지 확인합니다. 클러스터를 찾을 수 없거나 활성화되지 않은 경우 실행서는 로 건너뜁니다GenerateReport. -
UpdateEksClusterExists- 보고서 생성에 사용할 내부eksClusterExists변수를true로 설정합니다. -
GetVpcDnsSettings- Amazon EKS 클러스터와 연결된 Amazon Virtual Private Cloud에 대한enableDnsSupport및enableDnsHostnames설정을 검색합니다. -
BranchOnVpcDnsSettings- 두 VPC DNS 설정이 모두 활성화되어 있는지 확인합니다. 둘 중 하나가 비활성화되면 실행서는 로 건너뜁니다GenerateReport. 그렇지 않으면가 로 진행합니다DeployK8sAuthApisResources. -
DeployK8sAuthApisResources- Lambda 함수를 실행AWSSupport-SetupK8sApiProxyForEKS하여 Amazon EKS 클러스터에 인증된 Kubernetes API 호출을 수행하기 위한 프록시로 배포합니다. -
RetrieveCoreDNSDeployment- 포드 준비, 컨테이너 상태, CoreDNS 포드를 호스팅하는 노드의 준비 등 CoreDNS 배포에 대한 정보를 검색합니다. 또한 CoreDNS 클러스터 IP를 검색합니다. -
RetrieveAndInspectCoreDNSConfigMap- Amazon EKS 클러스터에서 CoreDNS ConfigMap을 검색하고에 지정된 도메인에 대한 스텁 도메인 설정을 포함하여 구성 문제를 확인합니다DnsName. -
ValidateHpaConfiguration- 지정된 네임스페이스에서 CoreDNS 배포를 위해 Horizontal Pod Autoscaler(HPA)가 구성되어 있는지 확인합니다. -
CheckS3BucketPublicStatus-에 지정된 Amazon S3 버킷이 퍼블릭 또는 익명 읽기 또는 쓰기 액세스를 허용하지S3BucketName않는지 확인합니다. -
CollectLogToS3- CoreDNS 포드 로그를 수집하여 지정된 Amazon S3 버킷에 업로드합니다. -
BranchOnProblematicNodeInstanceId-ProblematicNodeInstanceId가 제공되고 CoreDNS 호스트 노드가 존재하는지 확인합니다. 두 조건이 모두 충족되면가 로 진행합니다VerifyThatProblematicNodeInstanceBelongsToCluster. 그렇지 않으면가 로 분기합니다BranchOnCoreDnsDeployment. -
VerifyThatProblematicNodeInstanceBelongsToCluster-에 지정된 인스턴스가 Amazon EKS 클러스터의 작업자 노드ProblematicNodeInstanceId인지 확인합니다. -
UpdateProblematicNodeInstanceStanding- 내부problematicNodeInstanceStanding변수를 로 설정합니다true. -
GetProblematicInstanceDetails- 탐색 Amazon EC2 인스턴스를 생성할 때 사용할 문제가 있는 작업자 노드의 AMI ID, 인스턴스 유형, 서브넷 ID 및 보안 그룹 IDs를 검색합니다. -
CreateProbingInfrastructure- 인스턴스 프로파일을 생성하고 문제가 있는 작업자 노드와 동일한 서브넷의 AWS CloudFormation 스택을 통해 Amazon EC2 인스턴스를 탐색합니다. 스택의 이름은 입니다AWSSupport-TroubleshootEKSDNSFailure-<ExecutionId>. -
GetProbingInstanceId- CloudFormation 스택 출력에서 탐색 Amazon EC2 인스턴스 ID를 검색합니다. -
WaitForProbingInstanceSSMAgentStateToBeOnline- 계속하기 전에 탐색 중인 Amazon EC2 인스턴스의 Amazon EC2 Systems Manager 에이전트가Online상태를 보고할 때까지 기다립니다. Amazon EC2 -
RetrieveCoreDNSPodsIPFromProblematicNode- 문제가 있는 작업자 노드에서 볼 수 있는 CoreDNS 포드 IP 주소를 검색합니다. -
PerformDNSResolutionOnProbingEC2Instance- 클러스터 IP 및 CoreDNS 포드 IP를 사용하여 탐색 Amazon EC2 인스턴스에서 DNS 확인 검사를 실행합니다. -
DeleteCloudFormationStack- 탐색 Amazon EC2 인스턴스 및 인스턴스 프로파일을 생성한 CloudFormation 스택을 삭제합니다. -
UpdateCfnStackDeleted- 내부cfnStackDeleted변수를 로 설정합니다true. -
BranchOnCoreDnsDeployment-ProblematicNodeInstanceId가 제공되지 않았고 CoreDNS 호스트 노드가 존재하는지 확인합니다. 두 조건이 모두 충족되면가 로 진행합니다PerformDNSResolutionOnCoreDnsWorkerNodes. 그렇지 않으면가 로 진행합니다CleanupK8sAuthenticationInfrastructure. -
BranchOnCoreDnsNodesExistForRunCommandSteps-aws:runCommand단계를 실행하기 전에 CoreDNS 호스트 노드가 존재하는지 확인합니다. 노드가 없는 경우(예: CoreDNS에 복제본이 없는 경우)는 로 건너뜁니다CleanupK8sAuthenticationInfrastructure. -
PerformDNSResolutionOnCoreDnsWorkerNodes- 클러스터 IP 및 CoreDNS 포드 IP를 사용하여 CoreDNS 작업자 노드에서 DNS 확인 검사를 직접 실행합니다. -
VerifyNameserverMatchAndKubeProxyLogsAndIPTableEntries- 네임서버 IP가 클러스터 IP와 일치하는지 확인하고, API 서버에 대한 kube-proxy 포드 액세스를 확인하고, CoreDNS 작업자 노드의 kube-dns iptables 항목을 검증합니다. -
VerifyPPSThrottlingOnENIs- CoreDNS 작업자 노드에서 탄력적 네트워크 인터페이스(ENI)당 packets-per-second 수(PPS) 제한을 확인하여 잠재적 제한을 식별합니다. CoreDNS -
UpdateChecksOnNodes- 노드 수준 검사가 수행되었음을 나타내기true위해 내부checksOnNodes변수를 로 설정합니다. -
CleanupK8sAuthenticationInfrastructure-AWSSupport-SetupK8sApiProxyForEKSCleanup작업을 실행하여 자동화 중에 생성된 Lambda 프록시 함수 및 관련 리소스를 제거합니다. -
UpdateK8sInfrastructreDeleted- 내부K8sInfrastructreDeleted변수를 로 설정합니다true. -
CleanUpAllResources- 이전 정리 단계가 성공적으로 완료되지 않은 경우 CloudFormation 스택 및 Lambda 프록시 함수를 포함하여 나머지 리소스를 포괄적으로 정리합니다. -
CollectOutputFromAllRunCommandSteps- 자동화 중에 실행된 모든aws:runCommand단계의 출력을 수집하고 통합합니다. -
GenerateReport- 모든 이전 단계의 결과를 VPC DNS 설정, CoreDNS 배포 상태, ConfigMap 구성, HPA 구성, 로그 수집 상태 및 DNS 확인 검사 결과를 포함하는 포괄적인 평가 보고서로 컴파일합니다.
출력
GenerateReport.EvalReport - 조사 결과 및 권장 문제 해결 단계를 포함하여 수행된 모든 DNS 문제 해결 검사에 대한 포괄적인 보고서입니다.