본문으로 바로가기
반응형

Intro

오늘은 VPC CNI custom networking을 사용하지 않고, EKS노드그룹에 서브넷을 추가하는 방법에 대해 알아보도록 하겠습니다.

앞전에 EKS 클러스터에 서브넷 IP 추가 하기 라는 제목으로 포스팅을 연재하였었습니다.
https://kim-dragon.tistory.com/157?category=826616

이 포스팅은 "EKS클러스터에 IP가 부족할 경우 어떻게 해야할까?" 로 시작되었습니다.

우선 방법론적으로 말씀드리면 IP가 부족한 경우 2가지 방법으로 서브넷을 추가할 수 있습니다.

  • case1 : IP가 더 많은 서브넷을 생성하여 모두 이동한다라는 Migration 관점의 IP추가가 있을 것이고

  • case2 : 기존 서브넷은 유지하되 새로운 서브넷을 추가한다라는 관점이 있을 것입니다.

위에 연재한 EKS 클러스터에 서브넷 IP 추가 하기 포스팅은 case1의 Migration관점으로 VPC CNI custom networking를 사용하여 새로 생성한 subnet대역으로 이동하는 방법입니다.

이 방법은 아래 URL에서 자세한 예시를 확인할 수 있으며 기존 서브넷에 Primary ENI를 유지할 것인지, 유지 하지 않을것인지에 따라 아래 그림의 두가지 구조로 설정할 수 있습니다.

https://aws.amazon.com/ko/blogs/containers/optimize-ip-addresses-usage-by-pods-in-your-amazon-eks-cluster/

기존 서브넷에 Primary ENI를 유지

새로운 서브넷에 Primary ENI 이동

위 예시는 single AZ 일 경우의 예시 이며 이를 활용해서 multi AZ의 서브넷을 할당하기 위한 방법은 아래의 포스팅을 참고 하시면 됩니다.

EKS 클러스터에 서브넷 IP 추가 하기-3(VPC CNI custom networking 활용 성공 편)

https://kim-dragon.tistory.com/162?category=826616

EKS 클러스터에 서브넷 IP 추가 하기 (VPC CNI custom networking을 사용하지 않고, EKS노드그룹에 서브넷을 추가)

하지만 제가 원래 하고싶었던것은 아래 그림처럼 case2는 기존 서브넷은 유지하고 새로운 노드그룹으로의 확장하는 것이었습니다.

이럴 경우 어떻게 해야할까요? 답은 생각보다 간단했습니다.

기존 서브넷(10.0.0.0/20)과 새로운 서브넷(100.64.0.0/10)을 포함하는 새로운 노드그룹을 만들면 됩니다.
그리고 기존 노드에 있던 pod들을 안전하게 dranning 시킨뒤 기존 노드그룹은 삭제 하면되겠죠.

필자는 EKS 클러스터를 생성할때 서브넷을 지정하게 되는데 노드그룹을 생성할때도 이 서브넷안에서 선택이 되어야 하는것이 아닌가? 라고 생각했었습니다.
예를들어 EKS 클러스터를 생성할때 A,B,C,D 라는 서브넷을 선택했다면 노드그룹도 그 안에서 생성이 되어야 한다고 생각했습니다.

정답은 아니다 였습니다. EKS 클러스터를 생성할때 지정하는 서브넷은 단순히 EKS관리 영역인 컨트롤 플레인과 통신하기 위한 ENI를 생성하는 위치를 결정하는 요인이며, 노드그룹이 아무 상관이 없었습니다.

즉 향후 E,F의 서브넷이 추가되면 노드그룹을 생성할때 A,B,C,D,E,F로 설정할 수 있다는 이야기 입니다.

여기서 주의할점은 위 그림과 같이 VPC 대역 자체에 IP가 부족해서 secondary CIDR을 생성하여 서브넷을 생성 할 경우 EKS 컨트롤 플레인이 인식하기 까지 최대 5시간이 필요 하므로 시간적 여유를 갖고 작업을 해야합니다. (기존 VPC에 새로운 서브넷을 추가하는 경우에는 상관이 없습니다.)

이상 EKS클러스터에 서브넷IP 를 추가하는 방법에 대해 알아 보았는데요. 도움이 되었는지 모르겠습니다.

궁금한 부분이 있으면 언제든지 댓글이나 메일로 소통하면 좋을 것 같습니다. 감사합니다.

반응형