Amazon EKS에서 다른 AWS 서비스에 연결할 수 없는 이유는 무엇인가요?

4분 분량
0

Amazon Elastic Kubernetes Service(Amazon EKS)에서 다른 서비스로 연결하려고 할 때 발생하는 오류를 해결하고 싶습니다.

간략한 설명

포드를 다른 서비스에 연결할 수 없는 경우 다음 오류 중 하나 이상이 표시될 수 있습니다.

  • RequestError: send request failed\\ncaused by: Post \\\"https://ec2.us-west-2.amazonaws.com/\\\": dial tcp <IP address>: i/o timeout\"\
  • Couldn't connect to host, port: imap.mail.<region>.awsapps.com,<port>; timeout -1
  • java.net .SocketTimeoutException: connect timed out
  • Connection could not be created to jdbc:postgresql://<hostname>.<region>.rds.amazonaws.com:5432/
  • <URL>.<region>.rds.amazonaws.com (<IPaddress>:3306): Operation timed out
  • Error : java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=<hostname>.<region>.rds.amazonaws.com)(port=3306)(type=master) : Socket fail to connect to host:<hostname>.<region>.rds.amazonaws.com , port:3306. connect timed out***
  • o.apache.kafka.clients.NetworkClient -[Producer clientId=producer-1] Connection to node -1 (<hostname>.c3.kafka.<region>.amazonaws.com/<IPaddress>:9092) could not be established. 브로커가 제공되지 않을 수 있습니다.

이러한 오류는 잘못된 Amazon Virtual Private Cloud(VPC) 구성으로 인해 발생할 수 있는 네트워크 연결 문제 때문에 발생합니다. 이러한 문제를 해결하려면 다음과 관련된 보안 그룹 및 네트워크 액세스 제어 목록(ACL)을 확인하세요.

  • 워커 노드 인스턴스
  • 포드가 연결하려는 서비스

해결 방법

일반적으로 보안 그룹 규칙 또는 네트워크 ACL에서 필요한 권한을 명시적으로 거부하는 경우 연결 시간 초과 오류가 발생합니다.

이러한 오류를 해결하려면 다음을 확인하여 환경이 올바르게 설정되었는지 확인하세요.

  • 보안 그룹이 Amazon EKS 요구 사항을 충족합니다.
  • 포드의 보안 그룹에서 포드가 서로 통신할 수 있도록 허용합니다.
  • 네트워크 ACL이 연결을 거부하지 않습니다.
  • 서브넷에 Amazon VPC 내에서 통신하기 위한 로컬 경로가 있습니다.
  • 포드가 예약되어 있고 RUNNING 상태입니다.
  • 사용 가능한 최신 버전의 Kubernetes용 Amazon VPC Container Network Interface(CNI) 플러그인이 있습니다.
  • 클러스터의 VPC 서브넷에 포드가 액세스해야 하는 AWS 서비스용 VPC 인터페이스 엔드포인트가 있습니다.

보안 그룹이 Amazon EKS 요구 사항을 충족

인바운드 및 아웃바운드 규칙에서 워커 노드가 다른 서비스와 통신하는 데 사용하는 프로토콜 및 포트의 트래픽을 허용하는지 확인합니다. 클러스터와 노드 간에 모든 트래픽이 흐르도록 허용하고 모든 아웃바운드 트래픽을 모든 대상으로 허용하는 것이 가장 좋습니다. 새 포트가 있는 새 포드가 생성될 때마다 보안 그룹 규칙을 변경하지 않아도 됩니다. 자세한 내용은 Amazon EKS 보안 그룹 요구 사항 및 고려 사항을 참조하세요.

포드에 대한 보안 그룹이 포드가 서로 통신할 수 있도록 허용

포드에 대한 보안 그룹 또는 사용자 지정 네트워킹을 사용하는 경우 포드에 보안 그룹을 연결할 수 있습니다. 이 경우 보안 그룹이 포드 간 통신을 허용하는지 확인합니다.

네트워크 ACL이 연결을 거부하지 않음

  • Amazon EKS 클러스터와 VPC CIDR 간의 트래픽 흐름이 네트워크 ACL에서 원활한지 확인합니다.
  • 보안 그룹의 규칙과 유사한 규칙을 사용하여 네트워크 ACL을 설정하는 것이 좋습니다.

서브넷에 VPC 내에서 통신하기 위한 로컬 경로가 있음

서브넷에 VPC 내 통신에 대한 기본 경로가 있는지 확인합니다. 자세한 내용은 Amazon EKS VPC 및 서브넷 요구 사항 및 고려 사항을 참조하세요.

포드가 예약되어 있고 RUNNING 상태임

포드가 예약되어 있고 RUNNING 상태인지 확인합니다. 포드 상태에 관한 문제를 해결하려면 Amazon EKS에서 포드 상태 문제를 해결하려면 어떻게 해야 합니까?를 참조하세요.

사용 가능한 최신 버전의 Kubernetes용 Amazon VPC CNI 플러그인이 있음

사용 가능한 최신 버전의 Kubernetes용 Amazon VPC CNI 플러그 인을 실행하지 않는 경우 최신 버전으로 업데이트하는 것이 좋습니다.

여전히 문제가 발생하는 경우 Amazon EKS의 kubelet 또는 CNI 플러그인 문제를 해결하려면 어떻게 해야 하나요?를 참조하세요.

클러스터의 VPC 서브넷에 포드가 액세스해야 하는 서비스에 대한 VPC 엔드포인트 인터페이스가 있어야 함

일반적으로 사용되는 일부 서비스 및 엔드포인트는 다음 표에 나열되어 있습니다.

서비스엔드포인트
Amazon Elastic Compute Cloud(Amazon EC2)com.amazonaws.region-code.ec2
Amazon Elastic Container Registry(Amazon ECR)com.amazonaws.region-code.ecr.api com.amazonaws.region-code.ecr.dkr com.amazonaws.region-code.s3
Elastic Load Balancing(ELB)com.amazonaws.region-code.elasticloadbalancing
AWS X-Raycom.amazonaws.region-code.xray
Amazon CloudWatchcom.amazonaws.region-code.logs
AWS Security Token Service(AWS STS) (서비스 계정의 IAM 역할을 사용할 때 필요)com.amazonaws.region-code.sts
AWS App Mesh Kubernetes용 App Mesh 컨트롤러는 지원되지 않습니다. 자세한 내용은 GitHub 웹 사이트의 App Mesh 컨트롤러를 참조하세요. Cluster Autoscaler는 지원됩니다. Cluster Autoscaler 포드를 배포할 때는 명령줄에 --aws-use-static-instance-list=true가 포함되어 있는지 확인하세요. 자세한 내용은 GitHub 웹 사이트의 정적 인스턴스 목록 사용을 참조하세요. 워커 노드 VPC에는 AWS STS VPC 엔드포인트 및 Amazon EC2 Auto Scaling 엔드포인트도 포함되어야 합니다.com.amazonaws.region-code.appmesh-envoy-management

엔드포인트의 전체 목록은 AWS PrivateLink와 통합되는 AWS 서비스를 참조하세요.

VPC 엔드포인트의 보안 그룹에 워커 노드의 트래픽을 허용하는 인바운드 규칙이 있는지 확인하세요.


AWS 공식
AWS 공식업데이트됨 일 년 전