Amazon EKS에서 VPC 서브넷의 IP 주소를 사용하도록 Amazon VPC CNI 플러그인을 구성하는 모범 사례는 무엇입니까?

최종 업데이트 날짜: 2021년 11월 22일

Amazon Elastic Kubernetes Service(Amazon EKS)를 통해 VPC 서브넷의 IP 주소를 사용하도록 Amazon Virtual Private Cloud(VPC) 컨테이너 네트워크 인터페이스(CNI) 플러그인을 구성하려고 합니다. 모범 사례는 무엇입니까?

간략한 설명

Amazon VPC CNI의 주요 구성 요소 중 하나는 L-IPAM 데몬입니다. 노드에 IP 주소를 할당하도록 이 데몬을 구성합니다.

새 포드가 노드에서 스케줄링되면 kubelet은 CNI 바이너리를 호출합니다. CNI 바이너리는 L-IPAMD를 호출하여 새 포드의 IP 주소를 가져옵니다. 그런 다음 포드는 인스턴스에 연결된 탄력적 네트워크 인터페이스와 IP 주소를 추적합니다.

특정 구성 변수를 사용하여 유지 관리되는 네트워크 인터페이스 및 IP 주소 수를 제어할 수 있습니다. 자세한 내용은 WARM_ENI_TARGET, WARM_IP_TARGET, MINIMUM_IP_TARGET, WARM_PREFIX_TARGET, WARM_IP_TARGET, MINIMUM_IP_TARGET(GitHub 웹 사이트 참조)을 참조하십시오.

해결 방법

다음은 구성 변수를 사용하여 유지 관리되는 네트워크 인터페이스 및 IP 주소 수를 제어하는 기본적인 모범 사례입니다.

WARM_ENI_TARGET

WARM_ENI_TARGET 변수를 사용하여 L-IPAMD가 사용 가능한 상태로 유지하는 탄력적 네트워크 인터페이스 수를 결정하여 노드에서 예약할 때 포드에 IP 주소가 즉시 할당되도록 합니다.

  • 서브넷에서 사용 가능한 IP 주소가 고갈되지 않도록 하려면 작업자 노드 인스턴스 유형과 인터페이스당 최대 네트워크 인터페이스 수 및 프라이빗 IPv4 주소를 확인해야 합니다. 예를 들어 m5.xlarge 노드에 대해 WARM_ENI_TARGET=3을 설정하면 세 개의 탄력적 네트워크 인터페이스가 항상 노드에 연결됩니다. 그런 다음 노드는 탄력적 네트워크 인터페이스당 15개씩 45개의 IP 주소를 할당합니다. 45개의 IP 주소는 이 노드에 예약되어 있기 때문에 다른 작업자 노드에서 예약된 포드에는 해당 주소를 사용할 수 없습니다.
  • 애플리케이션이 크게 확장될 것으로 예상되는 경우 WARM_ENI_TARGET을 사용하여 새로 예약된 포드를 빠르게 수용할 수 있습니다.

WARM_IP_TARGET

WARM_IP_TARGET 변수를 사용하여 L-IPAMD의 웜 풀에서 사용할 수 있는 IP 주소 개수가 항상 정의되어 있는지 확인합니다.

  • 생산성이 낮은 클러스터의 경우 필요한 수의 IP 주소만 네트워크 인터페이스에 할당되도록 WARM_IP_TARGET을 사용합니다. 이렇게 하면 탄력적 네트워크 인터페이스의 IP 주소가 차단되지 않습니다.

MINIMUM_IP_TARGET

MINIMUM_IP_TARGET을 사용하여 노드가 처음 나타날 때 노드에 최소 IP 주소 수가 할당되었는지 확인합니다. 이 변수는 일반적으로 WARM_IP_TARGET 변수와 함께 사용됩니다.

  • 노드당 실행할 최소 포드 수를 알고 있는 경우 필요한 IP 주소 수가 할당되도록 MINIMUM_IP_TARGET을 사용합니다. IP 주소를 즉시 사용할 수 있는 경우 포드가 예약됨에 따라 포드가 IP 주소를 수신할 수 있습니다.
  • 이 변수를 WARM_IP_TARGET으로 설정하여 향후 포드에 사용할 수 있는 IP 주소가 노드에 있는지 확인합니다.

WARM_PREFIX_TARGET

WARM_PREFIX_TARGET 변수를 사용하여 인스턴스의 네트워크 인터페이스에 항상 정의된 수의 접두사(/28 CIDR 블록)가 추가되었는지 확인합니다. WARM_PREFIX_TARGET은 CNI 버전 1.9.0 이상에만 사용할 수 있으며, Amazon VPC CNI IP 주소 접두사 배정 기능을 활성화해야 합니다.

  • IP 주소 접두사 배정을 사용하는 경우 WARM_PREFIX_TARGET 변수가 1보다 크거나 같은 값으로 설정되어 있는지 확인합니다. 0으로 설정하면 다음 오류가 발생합니다.
Error: Setting WARM_PREFIX_TARGET = 0 is not supported while WARM_IP_TARGET/MINIMUM_IP_TARGET is not set. 
Please configure either one of the WARM_{PREFIX/IP}_TARGET or MINIMUM_IP_TARGET env variables
  • 더 작은 서브넷의 경우 너무 많은 접두사를 할당하지 않으려면 WARM_IP_TARGET과 함께 WARM_PREFIX_TARGET을 사용합니다. 접두사를 너무 많이 할당하면 사용 가능한 IP 주소가 고갈될 수 있습니다.

이러한 구성 변수가 IP 주소 사용률에 미치는 영향에 대한 자세한 내용은 CNI 구성 변수(GitHub 웹 사이트)를 참조하십시오.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?