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

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

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

VPC 요구 사항 및 고려 사항

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

  • VPC에는 생성하려는 클러스터, 노드 및 기타 Kubernetes 리소스에 사용 가능한 IP 주소가 충분해야 합니다. 사용하려는 VPC에 IP 주소가 충분하지 않은 경우 사용 가능한 IP 주소 수를 늘립니다. 이 작업은 해당 VPC를 통해 추가 Classless Inter-Domain Routing(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/cluster-name 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 리소스를 이러한 유형의 서브넷에 배포할 수 있습니다.

  • 서브넷에서는 IP 주소 기반 이름 지정을 사용해야 합니다. Amazon EC2 리소스 기반 이름 지정은 Amazon EKS에서는 지원되지 않습니다.

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

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

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

  • 서브넷에서는 IP 주소 기반 이름 지정을 사용해야 합니다. Amazon EC2 리소스 기반 이름 지정은 Amazon EKS에서는 지원되지 않습니다.

  • 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/cluster-name shared

버전이 1.19 이상인 Kubernetes 클러스터가 생성되면 Amazon EKS에서는 서브넷에 태그를 추가하지 않습니다. 버전이 1.19 이하인 클러스터에서 사용하는 서브넷에 태그가 있고 클러스터를 버전 1.19 이상으로 업데이트하는 경우에는 서브넷에서 태그가 제거되지 않습니다. 그러나 1.19로 업데이트를 완료하면 서비스를 중단하지 않고 제거할 수 있습니다. 하지만 버전 2.1.1 이하인 AWS Load Balancer Controller를 사용하는 경우에는 태그를 제거할 수 없습니다. 이러한 버전의 AWS 로드 밸런서 컨트롤러에도 이 태그가 필요합니다.

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

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

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

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