Amazon EC2 노드에 사용 가능한 IP 주소 증량
각 Amazon EC2 인스턴스는 최대 탄력적 네트워크 인터페이스 수와 각 네트워크 인터페이스에 할당할 수 있는 최대 IP 주소 수를 지원합니다. 각 노드에는 네트워크 인터페이스마다 IP 주소가 하나씩 필요합니다. 사용 가능한 다른 모든 IP 주소를 Pods
에 할당할 수 있습니다. 각 Pod
에는 자체 IP 주소가 필요합니다. 따라서 사용 가능한 컴퓨팅 및 메모리 리소스가 있지만 Pods
에 할당할 IP 주소가 부족하여 추가 Pods
를 수용할 수 없는 노드가 있을 수 있습니다.
이 주제에서는 노드에 개별 보조 IP 주소를 할당하는 대신 IP 접두사를 할당하여 노드가 Pods
에 할당할 수 있는 IP 주소 수를 크게 늘리는 방법을 알아봅니다. 각 접두사에는 여러 IP 주소가 포함됩니다. IP 접두사 할당을 위해 클러스터를 구성하지 않는 경우 클러스터는 Pod 연결에 필요한 네트워크 인터페이스와 IP 주소를 구성하기 위해 더 많은 Amazon EC2 애플리케이션 프로그래밍 인터페이스(API)를 호출해야 합니다. 클러스터가 더 큰 규모로 성장함에 따라 이러한 API 호출의 빈도가 증가하여 Pod 및 인스턴스 시작 시간이 더 길어질 수 있습니다. 이로 인해 규모가 크고 까다로운 워크로드의 수요를 충족하기 위해 확장이 지연되고 확장 요구 사항을 충족하기 위해 추가 클러스터와 VPC를 프로비저닝해야 하므로 비용 및 관리 오버헤드가 추가됩니다. 자세한 내용은 GitHub의 Kubernetes Scalability thresholds
고려 사항
-
각 Amazon EC2 인스턴스 유형은 최대 Pods 수를 지원합니다. 관리형 노드 그룹이 여러 인스턴스 유형으로 구성된 경우, 클러스터의 인스턴스에 대한 최대 Pods 수 가운데 최소 수가 클러스터의 모든 노드에 적용됩니다.
-
기본적으로 노드에서 실행할 수 있는 최대
Pods
수는 110개이지만 이 수를 변경할 수 있습니다. 숫자를 변경하고 기존 관리형 노드 그룹이 있는 경우 노드 그룹의 다음 AMI 또는 시작 템플릿 업데이트로 인해 새 노드에 변경된 값이 나타납니다. -
IP 주소 할당에서 IP 접두사 할당으로 전환할 때 기존 노드를 순차적으로 바꾸는 대신 새 노드 그룹을 생성하여 사용 가능한 IP 주소 수를 늘리는 것이 좋습니다. IP 주소와 접두사가 모두 할당된 노드에서 Pods를 실행하면 광고된 IP 주소 용량에 불일치가 발생하여 노드의 향후 워크로드에 영향을 줄 수 있습니다. 전환을 수행하는 권장 방법은 Amazon EKS 모범 사례 안내서의 Replace all nodes when migrating from Secondary IP mode to Prefix Delegation mode or vice versa
를 참조하세요. -
Linux 노드만 있는 클러스터의 경우
-
네트워크 인터페이스에 접두사를 할당하도록 추가 기능을 구성한 후에는 클러스터의 모든 노드 그룹에 있는 모든 노드를 제거하지 않으면
1.9.0
또는1.10.1
이전 버전에 Amazon VPC CNI plugin for Kubernetes 추가 기능을 다운로드할 수 없습니다. -
POD_SECURITY_GROUP_ENFORCING_MODE
=standard
및AWS_VPC_K8S_CNI_EXTERNALSNAT
=false
로 설정하고 Pods에 보안 그룹도 사용하는 경우 Pods가 VPC 외부의 엔드포인트와 통신할 때 Pods에 할당한 보안 그룹이 아닌 노드의 보안 그룹이 사용됩니다.POD_SECURITY_GROUP_ENFORCING_MODE
=strict
로 설정하고 Pods에 보안 그룹도 사용하는 경우Pods
가 VPC 외부의 엔드포인트와 통신할 때Pod's
보안 그룹이 사용됩니다.
-
사전 조건
-
기존 클러스터가 있어야 합니다. 배포하려면 Amazon EKS 클러스터 생성 부분을 참조하세요.
-
Amazon EKS 노드가 있는 서브넷에는 충분한 연속
/28
(IPv4
클러스터용) 또는/80
(IPv6
클러스터용) Classless Inter-Domain Routing(CIDR) 블록이 있어야 합니다.IPv6
클러스터에는 Linux 노드만 있을 수 있습니다. IP 주소가 서브넷 CIDR 전체에 분산되어 있는 경우 IP 접두사를 사용하지 못할 수 있습니다. 다음과 같이 하는 것이 좋습니다.-
서브넷 CIDR 예약을 사용하여 예약된 범위 내의 IP 주소가 아직 사용 중이더라도 릴리스 시 IP 주소가 다시 할당되지 않도록 합니다. 이렇게 하면 분할 없이 접두사를 할당할 수 있습니다.
-
IP 접두사가 할당된 워크로드 실행에 특별히 사용되는 새 서브넷을 사용합니다. IP 접두사를 할당할 때 Windows 및 Linux 워크로드를 모두 동일한 서브넷에서 실행할 수 있습니다.
-
-
노드에 IP 접두사를 할당하려면 노드가 AWS Nitro를 기반으로 해야 합니다. Nitro 기반이 아닌 인스턴스는 계속해서 개별 보조 IP 주소를 할당하지만 Nitro-based 인스턴스보다 Pods에 할당할 IP 주소 수가 상당히 적습니다.
-
Linux 노드만 있는 클러스터의 경우 – 클러스터가
IPv4
패밀리용으로 구성된 경우 버전1.9.0
이상의 Amazon VPC CNI plugin for Kubernetes 추가 기능이 설치되어 있어야 합니다. 현재 설치된 버전은 다음과 같은 명령으로 확인할 수 있습니다.kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2
클러스터가
IPv6
패밀리용으로 구성된 경우 버전1.10.1
의 추가 기능이 설치되어 있어야 합니다. 플러그인 버전이 필요한 버전보다 이전인 경우 업데이트해야 합니다. 자세한 내용은 Amazon VPC CNI plugin for Kubernetes Amazon EKS 추가 기능을 사용한 작업의 업데이트 부분을 참조하세요. -
Windows 노드만 있는 클러스터의 경우
-
클러스터와 해당 플랫폼 버전은 다음 표에 나와 있는 버전 이상이어야 합니다. 클러스터 버전을 업그레이드하려면 Amazon EKS 클러스터 Kubernetes 버전 업데이트 섹션을 참조하세요. 클러스터가 최소 플랫폼 버전이 아닌 경우 Amazon EKS가 플랫폼 버전을 업데이트할 때까지 노드에 IP 접두사를 할당할 수 없습니다.
Kubernetes 버전 플랫폼 버전 1.27
eks.3
1.26
eks.4
1.25
eks.5
aws eks describe-cluster --name
명령에서my-cluster
--query 'cluster.{"Kubernetes Version": version, "Platform Version": platformVersion}'
를 클러스터 이름으로 바꾼 다음 수정된 명령을 실행하여 현재 Kubernetes 및 플랫폼 버전을 확인할 수 있습니다.my-cluster
-
클러스터에 대해 Windows 지원이 활성화되었습니다. 자세한 내용은 Amazon EKS 클러스터에 대해 Windows 지원 사용 설정 섹션을 참조하세요.
-
Amazon EC2 노드에 사용 가능한 IP 주소의 증량하려면
-
노드에 IP 주소 접두사를 할당하도록 클러스터를 구성합니다. 해당 노드의 운영 체제와 일치하는 탭에서 절차를 완료합니다.
-
노드가 배포되면 클러스터의 노드를 확인합니다.
kubectl get nodes
예제 출력은 다음과 같습니다.
NAME STATUS ROLES AGE VERSION ip-
192-168-22-103
.region-code
.compute.internal Ready <none>19m
v1.XX.X-eks-6b7464
ip-192-168-97-94
.region-code
.compute.internal Ready <none>19m
v1.XX.X-eks-6b7464
-
노드 중 하나를 설명하여 노드에 대한
max-pods
값과 사용 가능한 IP 주소 수를 결정합니다.
을 이전 출력에서 반환된 노드 중 하나의 이름에 있는192.168.30.193
IPv4
주소로 바꿉니다.kubectl describe node ip-
192-168-30-193
.region-code
.compute.internal | grep 'pods\|PrivateIPv4Address'예제 출력은 다음과 같습니다.
pods:
110
vpc.amazonaws.com/PrivateIPv4Address:144
이전 출력에서
110
은144
개의 IP 주소를 사용할 수 있더라도 Kubernetes가 노드에 배포할 최대 Pods 수입니다.