VPC Advanced

EKS VPC CNI 소개 .

Amazon EKS는 Kubernetes용 Amazon VPC 컨테이너 네트워크 인터페이스(CNI) 플러그인을 통해 기본 VPC 네트워킹을 지원합니다. 이 CNI 플러그인을 사용하면 Kubernetes 포드에서 VPC 네트워크에서와 마찬가지로 포드 내 동일한 IP 주소를 보유합니다. CNI 플러그인은 GitHub에서 유지 관리하는 오픈 소스 프로젝트입니다. Amazon VPC CNI 플러그인은 AWS의 Amazon EKS 및 자체 관리형 Kubernetes 클러스터에서 사용할 수 있도록 완벽하게 지원됩니다.

Amazon EKS는 공식적으로 Amazon VPC CNI 플러그인만 지원합니다. 그러나 Amazon EKS는 업스트림 Kubernetes를 실행하며 Kubernetes 준수 인증을 받았으므로 대체 CNI 플러그인은 Amazon EKS 클러스터에서 작동합니다. 프로덕션 환경에서 대체 CNI 플러그인을 사용하려는 경우 상용 지원을 받거나 오픈 소스 CNI 플러그인 프로젝트를 문제 해결하고 수정을 제공할 수 있는 전문 지식을 내부적으로 보유하는 것이 좋습니다.

파트너

제품

설명서

CNI 플러그인은 Kubernetes 노드에 VPC IP 주소를 할당하고 각 노드의 포드에 대한 필수 네트워킹을 구성하는 역할을 합니다. ​플러그인에는 두 가지 기본 구성 요소가 있습니다.

  • L-IPAM 데몬은 탄력적 네트워크 인터페이스와 인스턴스의 연결, 탄력적 네트워크 인터페이스에 보조 IP 주소 할당 및 예약 시 Kubernetes 포드에 할당할 각 노드에 있는 IP 주소의 "웜 풀" 유지 관리를 책임집니다.

  • CNI 플러그인 자체는 호스트 네트워크 연결(예: 인터페이스 및 가상 이더넷 페어 구성) 및 포드 네임스페이스에 대한 올바른 인터페이스 추가를 책임집니다.

추가 상세 내용은 github에서 확인 가능합니다. (https://github.com/aws/amazon-vpc-cni-k8s/blob/master/README.md)

VPC CNI 모니터링.

아래 주요 명령을 통해서, ENI Secondary IP가 Pod에 매핑된 현황을 볼 수 있습니다.

kubectl을 통한 Pod와 Node간의 연결과 IP 할당을 확인합니다.

출력결과 예제

worker node에서도 Pod별 할당된 내용들을 상세하게 볼 수 있습니다.

출력 결과 예제는 아래와 같습니다.

다중 CIDR 주소 할당.

참조 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-multiple-cidr-ranges/

1.VPC ID를 변수 저장.

VPC_ID 변수에 VPC를 연결하기 위 다음 명령을 실행합니다.

2.CIDR 블록을 연결

VPC에 대해 100.64.0.0/16 범위의 CIDR 블록을 연결하려면 다음 명령을 실행합니다.

다음과 같은 출력 결과를 확인 할 수 있습니다.

3.서브넷 생성.

AWS 리전의 모든 가용 영역을 나열하려면 다음 명령을 실행합니다.

서브넷을 추가할 가용 영역을 선택한 다음 해당 가용 영역을 변수에 할당합니다.

VPC에서 새 CIDR 범위를 사용하여 새 서브넷을 생성하려면 다음 명령을 실행합니다.

Amazon EKS가 서브넷을 검색할 수 있도록 모든 서브넷에 태그를 지정해야 합니다. 기존에 생성되어 있는 예제를 살펴봅니다.

출력 결과는 아래 같습니다.

키–값 페어를 설정하여 서브넷에 이름 태그를 추가합니다. 또한 Amazon EKS에서 검색할 서브넷에 태그를 지정합니다.

아래와 같은 결과를 VPC 대쉬보드에서 확인 할 수 있습니다. 3개의 새로운 서브넷이 생성되고, 태그가 추가되었습니다.

4. 서브넷에 라우팅 테이블 연결.

VPC에서 퍼블릭 라우팅 테이블을 찾아서, 해당 라우팅 테이블의 키를 기준으로 Public Routing에 신규 생성된 서브넷을 연결합니다.

정상적으로 Public Routing Table에 추가 되었는지 확인합니다.

5.CNI Plugin 구성.

최신 버전의 CNI 플러그인이 있는지 확인하려면 다음 명령을 실행합니다.

CNI 플러그인 버전을 다운로드 받습니다. (예제에서는 v1.6을 다운 받습니다.)

CNI 플러그인에 대한 사용자 지정 네트워크 구성을 활성화하려면 다음 명령을 실행합니다.

worker node를 식별하기 위한 ENIConfig 라을 추가하려면 다음 명령을 실행합니다.

정상적으로 라벨이 추가 되었는지 확인합니다.

아래와 같은 출력 결과물을 얻을 수 있습니다.

6.CRD 생성.

CRD는 앞서 소개한 Chapter를 확인합니다.

ENIConfig CRD에 대한 Customer Resource를 생성합니다. 이때 반드시 ENIConfig CRD가 준비되어 있어야 합니다.

아래와 같은 출력 결과를 얻을 수 있습니다.

새로 구성할 Subnet들을 출력합니다.

아래와 같이 출력됩니다.

Instance ID와 Mapping되어 있는 Security ID를 출력합니다

출력되는 결과는 아래와 같습니다.

VPC/EC2 대시보드를 통해서도 확인이 가능합니다.

출력된 서브넷과 Security를 Custom Resource로 생성합니다.

eksworkshop-Secondary-PublicSubnet01 를 위한 yaml - group1-pod-netconfig.yaml

eksworkshop-Secondary-PublicSubnet02 를 위한 yaml - group2-pod-netconfig.yaml

eksworkshop-Secondary-PublicSubnet03 를 위한 yaml - group3-pod-netconfig.yaml

CRD를 적용합니다.

Custom network config에 Annotate를 적용합니다.

Last updated

Was this helpful?