Amazon EKS VPC 및 서브넷 요구 사항과 고려 사항 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.

Amazon EKS VPC 및 서브넷 요구 사항과 고려 사항

클러스터를 생성하는 경우 서로 다른 가용 영역에 있는 VPC 및 두 개 이상의 서브넷을 지정합니다. 이 주제에서는 클러스터에서 사용하는 VPC 및 서브넷에 대한 Amazon EKS별 요구 사항과 고려 사항을 간략하게 살펴봅니다. Amazon EKS에서 사용할 VPC가 없는 경우 Amazon EKS 제공 AWS CloudFormation 템플릿을 사용하여 생성할 수 있습니다. AWS Outposts에서 로컬 또는 확장 클러스터를 생성하는 경우 이 주제 대신 Amazon EKS 로컬 클러스터 VPC 및 서브넷 요구 사항과 고려 사항(Amazon EKS 로컬 클러스터 VPC 및 서브넷 요구 사항 및 고려 사항)를 참조하세요.

VPC 요구 사항 및 고려 사항

클러스터를 생성하는 경우 지정하는 VPC는 다음 요구 사항 및 고려 사항을 충족해야 합니다.

  • VPC에는 생성하려는 클러스터, 노드 및 기타 Kubernetes 리소스에 사용 가능한 IP 주소가 충분해야 합니다. 사용하려는 VPC에 IP 주소가 충분하지 않은 경우 사용 가능한 IP 주소 수를 늘립니다.

    클러스터 구성을 업데이트하여 클러스터에서 사용하는 서브넷 및 보안 그룹을 변경하면 이 작업을 수행할 수 있습니다. AWS Management Console, AWS CLI의 최신 버전, AWS CloudFormation 및 eksctl 버전 v0.164.0-rc.0 이상에서 업데이트할 수 있습니다. 서브넷에 사용 가능한 IP 주소를 더 많이 제공하여 클러스터 버전을 성공적으로 업그레이드하려면 이 작업을 수행해야 할 수도 있습니다.

    중요

    추가하는 모든 서브넷은 클러스터를 생성할 때 원래 제공한 것과 동일한 AZ 세트에 있어야 합니다. 새 서브넷은 다른 모든 요구 사항을 충족해야 합니다. 예를 들어 충분한 IP 주소가 있어야 합니다.

    예를 들어 클러스터를 만들고 서브넷 4개를 지정했다고 가정합시다. 지정한 순서대로 첫 번째 서브넷은 us-west-2a 가용 영역에, 두 번째와 세 번째 서브넷은 us-west-2b 가용 영역에, 네 번째 서브넷은 us-west-2c 가용 영역에 있습니다. 서브넷을 변경하려면 세 가용 영역 각각에 하나 이상의 서브넷을 제공해야 하며, 서브넷은 원래 서브넷과 동일한 VPC에 있어야 합니다.

    VPC의 CIDR 블록보다 많은 IP 주소가 필요한 경우, 추가적인 Classless Inter-Domain Routing(CIDR) 블록을 VPC에 연결하여 CIDR 블록을 추가할 수 있습니다. 클러스터를 생성하기 전이나 후에 프라이빗(RFC 1918) 및 퍼블릭(비RFC 1918) CIDR 블록을 VPC에 연결합니다. 클러스터가 VPC와 연결된 CIDR 블록을 인식하는 데 최대 5시간이 걸릴 수 있습니다.

    공유 서비스 VPC를 통해 전송 게이트웨이를 사용하여 IP 주소 사용을 절약할 수 있습니다. 자세한 내용은 공유 서비스를 사용하여 격리된 VPC하이브리드 네트워크의 Amazon EKS VPC 라우팅 가능 IP 주소 보존 패턴을 참조하세요.

  • Kubernetes가 IPv6 주소를 Pods 및 서비스에 할당하게 하려는 경우 IPv6 CIDR 블록을 VPC와 연결합니다. 자세한 내용을 알아보려면 Amazon VPC 사용 설명서의 IPv6 CIDR 블록을 VPC와 연결을 참조하세요.

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

  • VPC에는 AWS PrivateLink를 사용하는 VPC 엔드포인트가 필요할 수 있습니다. 자세한 내용은 서브넷 요구 사항 및 고려 사항 단원을 참조하십시오.

Kubernetes 1.14 또는 이전 버전을 사용하여 클러스터를 생성한 경우 Amazon EKS에서는 VPC에 다음 태그를 추가했습니다.

kubernetes.io/cluster/my-cluster owned

이 태그는 Amazon EKS에서만 사용되었습니다. 서비스에 영향을 주지 않고 태그를 제거할 수 있습니다. 버전 1.15 이상인 클러스터에서는 사용되지 않습니다.

서브넷 요구 사항 및 고려 사항

클러스터를 생성하는 경우 Amazon EKS에서는 지정한 서브넷에 2~4개의 탄력적 네트워크 인터페이스를 생성합니다. 이러한 네트워크 인터페이스를 사용하면 클러스터와 VPC 간에 통신할 수 있습니다. 또한 이러한 네트워크 인터페이스를 통해 Kubernetes 및 kubectl exec와 같은 kubectl logs 기능을 사용 설정할 수 있습니다. 각 Amazon EKS 생성 네트워크 인터페이스의 설명에는 Amazon EKS cluster-name이 포함되어 있습니다.

클러스터를 생성하는 경우 Amazon EKS에서는 지정한 서브넷에 해당 네트워크 인터페이스를 생성합니다. 클러스터가 생성되면 Amazon EKS가 네트워크 인터페이스를 생성하는 서브넷을 변경할 수 있습니다. Kubernetes 버전의 클러스터를 업데이트하면 Amazon EKS에서는 클러스터가 생성한 원래 네트워크 인터페이스를 삭제하고 새로운 네트워크 인터페이스를 생성합니다. 이러한 네트워크 인터페이스는 원래 네트워크 인터페이스와 동일한 서브넷 또는 원래 네트워크 인터페이스와 다른 서브넷에서 생성될 수 있습니다. 네트워크 인터페이스가 생성되는 서브넷을 제어하려면 클러스터를 생성하거나 클러스터를 생성한 후 서브넷을 업데이트할 때 지정하는 서브넷 수를 2개로 제한할 수 있습니다.

클러스터의 서브넷 요구 사항

클러스터를 생성하거나 업데이트하는 경우 지정하는 서브넷은 다음 요구 사항을 충족해야 합니다.

  • 각 서브넷에는 Amazon EKS에서 사용할 IP 주소가 6개 이상 있어야 합니다. 하지만 16개 이상의 IP 주소를 사용하는 것이 좋습니다.

  • 서브넷은 AWS Outposts, AWS Wavelength 또는 AWS Local Zone에 상주할 수 없습니다. 그러나 VPC에 있는 경우 자체 관리형 노드 및 Kubernetes 리소스를 이러한 유형의 서브넷에 배포할 수 있습니다.

  • 서브넷은 퍼블릭 또는 프라이빗일 수 있습니다. 그러나 가능한 경우 프라이빗 서브넷을 지정하는 것이 좋습니다. 퍼블릭 서브넷은 인터넷 게이트웨이로 이어지는 경로가 포함된 라우팅 테이블을 사용한 서브넷인 반면 프라이빗 서브넷은 인터넷 게이트웨이로 이어지는 경로가 포함되지 않은 라우팅 테이블을 사용한 서브넷입니다.

  • 서브넷은 다음 가용 영역에 상주할 수 없습니다.

    AWS 리전 지역명 허용되지 않는 가용 영역 ID
    us-east-1 미국 동부(버지니아 북부) use1-az3
    us-west-1 미국 서부(캘리포니아 북부) usw1-az2
    ca-central-1 캐나다(중부) cac1-az3

구성 요소별 IP 주소 패밀리 사용

다음 표에는 Amazon EKS의 각 구성 요소에서 사용하는 IP 주소 패밀리가 나와 있습니다. Network Address Translation(NAT) 또는 기타 호환성 시스템을 사용하여 테이블 항목 "No" 값이 있는 패밀리의 소스 IP 주소에서 이러한 구성 요소에 연결할 수 있습니다.

기능은 클러스터의 IP family(ipFamily) 설정에 따라 다를 수 있습니다. 이 설정은 Kubernetes에서 Services에 할당하는 CIDR 블록에 사용되는 IP 주소 유형을 변경합니다. 설정 값이 IPv4인 클러스터를 IPv4 cluster라 하고, 설정 값이 IPv6인 클러스터를 IPv6 cluster라 합니다.

구성 요소 IPv4 주소만 IPv6 주소만 이중 스택 주소
EKS API 퍼블릭 엔드포인트 아니요 아니요
EKS API VPC 엔드포인트 아니요 아니요
EKS Auth API 퍼블릭 엔드포인트 1 1 1
EKS Auth API VPC 엔드포인트 1 1 1
EKS 클러스터 퍼블릭 엔드포인트 아니요 아니요
EKS 클러스터 프라이빗 엔드포인트 2 2 아니요
EKS 클러스터 서브넷 2 아니요 2
노드 기본 IP 주소 2 아니요 2
Service IP 주소의 클러스터 CIDR 범위 2 2 아니요
VPC CNI의 Pod IP 주소 2 2 아니요
참고

1 엔드포인트는 IPv4IPv6 주소가 모두 포함된 이중 스택입니다. AWS 외부의 애플리케이션, 클러스터의 노드 및 클러스터 내부의 포드는 IPv4 또는 IPv6 중 하나를 통해 이 엔드포인트에 도달할 수 있습니다.

2 클러스터를 생성할 때 클러스터의 IP family(ipFamily) 설정에서 IPv4 클러스터와 IPv6 클러스터 중 하나를 선택하며, 이는 변경할 수 없습니다. 대신 다른 클러스터를 생성하고 워크로드를 마이그레이션할 때 다른 설정을 선택해야 합니다.

노드의 서브넷 요구 사항

클러스터를 생성할 때 지정하는 것과 동일한 서브넷에 노드 및 Kubernetes 리소스를 배포할 수 있습니다. 그러나 이 작업은 필요하지 않습니다. 클러스터를 생성할 때 지정하지 않은 서브넷에 노드 및 Kubernetes 리소스를 배포할 수 있기 때문입니다. 노드를 다른 서브넷에 배포하는 경우 Amazon EKS에서는 해당 서브넷에서 클러스터 네트워크 인터페이스를 생성하지 않습니다. 노드 및 Kubernetes 리소스를 배포하는 모든 서브넷은 다음 요구 사항을 충족해야 합니다.

  • 서브넷에는 모든 노드와 Kubernetes 리소스를 배포할 수 있는 IP 주소가 충분해야 합니다.

  • Kubernetes가 IPv6 주소를 Pods 및 서비스에 할당하도록 하려는 경우 서브넷에 연결된 IPv6 CIDR 블록 하나와 IPv4 CIDR 블록 하나가 있어야 합니다. 자세한 내용을 알아보려면 Amazon VPC 사용 설명서의 IPv6 CIDR 블록을 서브넷과 연결을 참조하세요. 서브넷과 연결된 라우팅 테이블에는 IPv4IPv6 주소로 이어지는 경로가 포함되어야 합니다. 자세한 내용을 알아보려면 Amazon VPC 사용 설명서의 경로를 참조하세요. 포드는 IPv6 주소에만 할당됩니다. 그러나 Amazon EKS가 클러스터와 노드에 대해 생성하는 네트워크 인터페이스에는 IPv4IPv6 주소가 할당됩니다.

  • 인터넷에서 Pods로 인바운드 액세스가 필요한 경우 로드 밸런서와 인그레스를 배포할 수 있는 IP 주소가 충분한 퍼블릭 서브넷이 하나 이상 있어야 합니다. 로드 밸런서를 퍼블릭 서브넷에 배포할 수 있습니다. 로드 밸런서는 프라이빗 또는 퍼블릭 서브넷의 Pods에 로드 밸런싱할 수 있습니다. 가능하면 프라이빗 서브넷에 노드를 배포하는 것이 좋습니다.

  • 노드를 퍼블릭 서브넷에 배포하려는 경우 서브넷이 IPv4 퍼블릭 주소 또는 IPv6 주소를 자동 할당해야 합니다. 연결된 IPv6 CIDR 블록이 있는 프라이빗 서브넷에 노드를 배포하는 경우 프라이빗 서브넷도 IPv6 주소를 자동 할당해야 합니다. 2020년 3월 26일 이후에 Amazon EKS AWS CloudFormation 템플릿을 사용하여 VPC를 배포한 경우 이 설정이 사용 설정됩니다. 템플릿을 사용하여 이 날짜 이전에 VPC를 배포했거나 자체 VPC를 사용하는 경우 이 설정을 수동으로 사용 설정해야 합니다. 자세한 내용을 알아보려면 Amazon VPC 사용 설명서서브넷의 퍼블릭 IPv4 주소 지정 속성 수정서브넷의 IPv6 주소 지정 속성 수정을 참조하세요.

  • 노드를 배포하는 서브넷이 프라이빗 서브넷이고 해당 라우팅 테이블에 Network Address Translation(NAT) 디바이스(IPv4) 또는 발신 전용 게이트웨이(IPv6)로 이어지는 경로가 포함되지 않은 경우, AWS PrivateLink를 사용하는 VPC 엔드포인트를 사용자 VPC에 추가합니다. VPC 엔드포인트는 노드 및 Pods와 통신해야 하는 모든 AWS 서비스에 필요합니다. 예를 들면 Amazon ECR, Elastic Load Balancing, Amazon CloudWatch, AWS Security Token Service 및 Amazon Simple Storage Service(Amazon S3)가 있습니다. 엔드포인트에는 노드가 있는 서브넷이 포함되어야 합니다. 일부 AWS 서비스가 VPC 엔드포인트를 지원합니다. 자세한 내용을 알아보려면 AWS PrivateLink란?AWS PrivateLink와 통합되는 AWS 서비스를 참조하세요. Amazon EKS 추가 요구 사항 목록은 프라이빗 클러스터 요구 사항 섹션을 참조하세요.

  • 서브넷에 로드 밸런서를 배포하려는 경우 서브넷에는 다음 태그가 있어야 합니다.

    • 프라이빗 서브넷

      kubernetes.io/role/internal-elb 1
    • 퍼블릭 서브넷

      kubernetes.io/role/elb 1

이전에는 버전이 Kubernetes 이하인 1.18 클러스터가 생성되면 Amazon EKS에서 지정된 모든 서브넷에 다음 태그를 추가했습니다.

kubernetes.io/cluster/my-cluster shared

지금은 새 Kubernetes 클러스터를 생성하면 Amazon EKS에서 서브넷에 태그를 추가하지 않습니다. 태그가 이전에 1.19 이하 버전인 클러스터에서 사용된 서브넷에 있는 경우 클러스터가 최신 버전으로 업데이트될 때 태그가 서브넷에서 자동으로 제거되지 않았습니다. 버전 2.1.1 이하의 AWS Load Balancer Controller에는 이 태그가 필요합니다. 최신 버전의 Load Balancer Controller를 사용하는 경우 서비스를 중단하지 않고 태그를 제거할 수 있습니다.

eksctl 또는 Amazon EKS AWS CloudFormation VPC 템플릿 중 하나를 사용하여 VPC를 배포한 경우 다음이 적용됩니다.

  • 2020년 3월 26일 또는 그 이후 - 퍼블릭 서브넷에서 퍼블릭 서브넷에 배포된 새 노드에 퍼블릭 IPv4 주소가 자동으로 할당됩니다.

  • 2020년 3월 26일 이전 - 퍼블릭 서브넷에서 퍼블릭 서브넷에 배포된 새 노드에 퍼블릭 IPv4 주소가 자동으로 할당되지 않습니다.

이 변경은 다음과 같은 방식으로 퍼블릭 서브넷에 배포된 새 노드 그룹에 영향을 줍니다.

공유 서브넷 요구 사항 및 고려 사항

VPC 공유를 사용하여 서브넷을 동일한 AWS Organizations 내의 다른 AWS 계정과 공유할 수 있습니다. 다음 사항을 고려하여 공유 서브넷에서 Amazon EKS 클러스터를 생성할 수 있습니다.

  • VPC 서브넷의 소유자가 참여자 계정과 서브넷을 공유해야 해당 계정에서 Amazon EKS 클러스터를 생성할 수 있습니다.

  • 참여자는 VPC의 기본 보안 그룹을 사용하여 리소스를 시작할 수 없습니다. 보안 그룹은 소유자에게 속해 있기 때문입니다. 또한 참여자는 소유자 또는 다른 참여자가 소유한 보안 그룹을 사용하여 리소스를 시작할 수 없습니다.

  • 공유 서브넷에서는 참여자와 소유자가 각 계정 내의 보안 그룹을 별도로 제어합니다. 서브넷 소유자는 참여자가 생성한 보안 그룹을 볼 수 있지만 이 보안 그룹에 대해 조치를 취할 수는 없습니다. 서브넷 소유자가 보안 그룹을 제거하거나 수정하고자 하는 경우 보안 그룹을 생성한 참가자가 조치를 취해야 합니다.

  • 참여자가 클러스터를 생성한 경우 다음 고려 사항이 적용됩니다.

    • 클러스터 IAM 역할 및 노드 IAM 역할을 해당 계정에서 생성해야 합니다. 자세한 내용은 Amazon EKS 클러스터 IAM 역할Amazon EKS 노드 IAM 역할 단원을 참조하세요.

    • 관리형 노드 그룹을 포함하여 모든 노드는 동일한 참여자가 생성해야 합니다.

  • 공유 VPC 소유자는 참여자가 공유 서브넷에서 생성한 클러스터의 보기, 업데이트 또는 삭제가 불가능합니다. 여기에 더해 계정마다 액세스 권한이 다른 VPC 리소스가 있습니다. 자세한 내용은 Amazon VPC 사용 설명서의 소유자 및 참여자에 대한 책임 및 권한을 참조하세요.

  • Amazon VPC CNI plugin for Kubernetes의 사용자 지정 네트워킹 기능을 사용하는 경우 소유자 계정에 나열된 가용 영역 ID 매핑을 사용하여 각각의 ENIConfig를 생성해야 합니다. 자세한 내용은 포드에 대한 사용자 지정 네트워킹 단원을 참조하십시오.

VPC 서브넷 공유에 관한 자세한 내용은 Amazon VPC 사용 설명서다른 계정과 VPC 공유를 참조하세요.