클러스터 VPC 고려 사항 - Amazon EKS

클러스터 VPC 고려 사항

Amazon EKS는 Kubernetes가 프라이빗 서브넷에 있는 노드에서 실행되는 포드로 트래픽을 로드 밸런싱하는 퍼블릭 서브넷에 퍼블릭 로드 밸런서를 생성할 수 있도록 퍼블릭 및 프라이빗 서브넷이 있는 VPC에서 클러스터를 실행할 것을 권장합니다. 그러나 이 구성은 필요하지 않습니다. 네트워킹 및 보안 요구 사항에 따라 프라이빗 서브넷만 사용하거나 퍼블릭 서브넷만 사용하는 VPC PC에서 클러스터를 실행할 수 있습니다. 프라이빗 서브넷만 사용하여 VPC로 배포되는 클러스터에 대한 자세한 내용은 프라이빗 클러스터 섹션을 참조하세요.

Amazon EKS 클러스터를 생성할 때 Amazon EKS가 탄력적 네트워크 인터페이스를 배치할 수 있는 VPC 서브넷을 지정합니다. Amazon EKS는 최소 2개의 가용 영역에 서브넷이 필요하며, 노드와의 제어 플레인 통신을 용이하게 하기 위해 이러한 서브넷에 최대 4개의 네트워크 인터페이스를 생성합니다. 이 통신 채널은 kubectl execkubectl logs 등의 Kubernetes 기능을 지원합니다. Amazon EKS가 생성한 클러스터 보안 그룹과 클러스터를 생성할 때 지정하는 추가 보안 그룹이 이러한 네트워크 인터페이스에 적용됩니다. 각 Amazon EKS 생성 네트워크 인터페이스의 설명에는 Amazon EKS <cluster name>이 포함되어 있습니다.

클러스터를 생성하는 동안 지정하는 서브넷에 Amazon EKS가 생성한 네트워크 인터페이스에 사용할 수 있는 IP 주소가 충분히 있는지 확인하세요. 작은(/28) Amazon EKS 전용 서브넷이 네트워크 인터페이스를 생성하고 이러한 서브넷을 클러스터 생성의 일부로만 지정하는 것이 좋습니다. 노드 및 로드 밸런서와 같은 다른 리소스는 클러스터를 만드는 동안 지정된 서브넷과 별도의 서브넷에서 실행되어야 합니다.

중요
  • 노드 및 로드 밸런서는 클러스터 생성 중에 Amazon EKS에 등록되지 않은 서브넷을 포함하여 클러스터 VPC 모든 서브넷에서 시작할 수 있습니다. 서브넷에는 노드에 대한 태그가 필요하지 않습니다. Kubernetes 로드 밸런싱 자동 검색이 작동하려면, 서브넷 태깅에서 설명하는 것처럼 서브넷이 태깅되어야 합니다.

  • 클러스터와 연결된 서브넷은 클러스터를 생성한 후에는 변경할 수 없습니다. Amazon EKS가 생성한 네트워크 인터페이스가 배치되는 서브넷을 정확히 제어해야 하는 경우 클러스터 생성 중에 각각 다른 가용 영역에 있는 두 개의 서브넷만 지정합니다.

  • Amazon EKS가 클러스터를 처음 생성한 후 VPC에 추가된 추가 CIDR 블록에서 서브넷에서 시작된 노드와 통신할 수 없는 알려진 문제가 있습니다. 이 문제가 발생하는 경우 Amazon EKS가 VPC 추가된 추가 CIDR 블록을 인식하도록 클러스터를 수동으로 업데이트하도록 지원 티켓을 제출하세요.

  • 클러스터를 생성할 때 AWS Outposts, AWS Wavelength 또는 AWS 로컬 영역에서 서브넷을 선택하지 마세요.

  • v1.14 이전 버전을 사용하여 생성된 클러스터에는 VPC에 대한 "kubernetes.io/cluster/<cluster-name> 태그가 포함되어 있습니다. 이 태그는 Amazon EKS에서만 사용되며 안전하게 제거할 수 있습니다.

VPC는 DNS 호스트 이름 및 DNS 확인을 모두 지원해야 합니다. 그렇지 않으면 노드가 클러스터에 등록할 수 없습니다. 자세한 내용은 Amazon VPC 사용 설명서의 VPC에서 DNS 사용을 참조하세요.

VPC IP 주소 지정

노드는 제어 영역 및 기타 통신할 수 있어야 합니다.AWS서비스. 노드가 프라이빗 서브넷에 배포된 경우 서브넷은 다음 요구 사항 중 하나를 충족해야 합니다.

  • NAT 게이트웨이에 대한 기본 경로가 있습니다. 노드에 인터넷 액세스 권한을 제공하려면 NAT 게이트웨이에 퍼블릭 IP 주소를 할당해야 합니다.

  • 프라이빗 클러스터에 필요한 설정 및 요구 사항이 구성되어 있습니다.

자체 관리형 노드가 퍼블릭 서브넷에 배포된 경우, 퍼블릭 IP 주소를 자동 할당하도록 서브넷을 구성해야 합니다. 그렇지 않으면 노드 인스턴스가 시작될 때 퍼블릭 IP 주소를 할당해야 합니다. 자세한 내용은 Amazon VPC 사용 설명서에서 인스턴스 시작 시 퍼블릭 IPv4 주소 할당 섹션을 참조하세요. 관리형 노드가 퍼블릭 서브넷에 배포된 경우, 퍼블릭 IP 주소를 자동 할당하도록 서브넷을 구성해야 합니다. 서브넷이 퍼블릭 IP 주소를 자동으로 할당하도록 구성되어 있지 않으면 노드에 퍼블릭 IP 주소가 할당되지 않습니다. 다음 명령을 사용하여 퍼블릭 서브넷이 퍼블릭 IP 주소를 자동 할당하도록 구성되어 있는지 여부를 확인합니다. <example values>(<> 포함)를 고유한 값으로 교체합니다.

aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=<VPC-ID>" | grep 'SubnetId\|MapPublicIpOnLaunch'

결과

"MapPublicIpOnLaunch": <false>,"SubnetId": "<subnet-aaaaaaaaaaaaaaaaa>","MapPublicIpOnLaunch": <false>,"SubnetId": "<subnet-bbbbbbbbbbbbbbbbb>",

MapPublicIpOnLaunchfalse로 설정된 서브넷의 경우 설정을 true로 변경합니다.

aws ec2 modify-subnet-attribute --map-public-ip-on-launch --subnet-id <subnet-aaaaaaaaaaaaaaaaa>
중요

2020년 3월 26일 이전에 Amazon EKS AWS AWS CloudFormation 템플릿을 사용하여 VPC를 배포한 경우 퍼블릭 서브넷에 대한 설정을 변경해야 합니다.

Amazon EKS 클러스터에 사용할 VPC에서 프라이빗 (RFC 1918) 및 퍼블릭(비RFC 1918) 클래스 없는 도메인 간 라우팅(CIDR) 범위를 모두 정의할 수 있습니다. 자세한 내용은 Amazon VPC 사용 설명서의 VPC에 IPv4 CIDR 블록 추가를 참조하세요. VPC 및 서브넷에 대한 CIDR 블록을 선택할 때는 배포하려는 모든 Amazon EC2 노드 및 포드에 대해 블록에 충분한 IP 주소가 포함되어 있는지 확인합니다. 각 포드에 대해 하나 이상의 IP 주소가 있어야 합니다. 공유 서비스 VPC를 사용하여 전송 게이트웨이를 구현함으로써 IP 주소 사용을 줄일 수 있습니다. 자세한 내용은 공유 서비스를 사용하여 격리된 VPC하이브리드 네트워크의 Amazon EKS VPC 라우팅 가능 IP 주소 보존 패턴을 참조하세요.

서브넷 태깅

1.18 이하 클러스터의 경우 Amazon EKS는 클러스터 생성 중에 전달된 모든 서브넷에 다음 태그를 추가합니다. Amazon EKS는 1.19 클러스터를 생성할 때 전달된 서브넷에 태그를 추가하지 않습니다. 1.19 이전 버전에서 생성한 클러스터에서 사용하는 서브넷에 태그가 있고 클러스터를 1.19로 업데이트하면 서브넷에서 태그가 제거되지 않습니다.

  • - kubernetes.io/cluster/<cluster-name>

  • - shared

필요에 따라 이 태그를 사용하여 Elastic Load Balancer를 자동으로 프로비저닝하는 데 필요한 서브넷 태그와 함께 Elastic Load Balancer가 프로비저닝되는 위치를 제어할 수 있습니다. 로드 밸런서 서브넷 태깅에 대한 자세한 내용은 Amazon EKS의 애플리케이션 로드 밸런싱Amazon EKS의 네트워크 로드 밸런싱 섹션을 참조하세요.