하이브리드 노드의 네트워킹 개념

하이브리드 노드의 네트워킹 개념 (Networking concepts for hybrid nodes)

이 섹션은 EKS Hybrid Nodes용 네트워크 토폴로지를 설계할 때 고려해야 하는 핵심 네트워킹 개념과 제약 조건을 자세히 설명해요.

출처: 문서

본문

EKS Hybrid Nodes의 네트워킹 개념

VPC를 네트워크 허브로 (VPC as the network hub)

클라우드 경계를 가로지르는 모든 트래픽은 VPC를 통해 라우팅돼요. 여기에는 AWS에서 실행되는 EKS 컨트롤 플레인이나 Pod에서 하이브리드 노드 또는 그 위에서 실행되는 Pod로 가는 트래픽이 포함돼요. 클러스터의 VPC를 하이브리드 노드와 클러스터의 나머지 부분 사이의 네트워크 허브로 생각할 수 있어요. 이 아키텍처는 트래픽과 그 라우팅을 완전히 제어할 수 있게 하지만, VPC의 라우트, 보안 그룹, 방화벽을 올바르게 구성하는 책임도 갖게 해요.

EKS 컨트롤 플레인에서 VPC로 (EKS control plane to the VPC)

EKS 컨트롤 플레인은 탄력적 네트워크 인터페이스(ENI)를 VPC에 연결해요. 이 ENI는 EKS API 서버와의 트래픽을 처리해요. 클러스터를 구성할 때 EKS 컨트롤 플레인 ENI의 배치를 제어할 수 있는데, EKS는 클러스터 생성 중 전달한 서브넷에 ENI를 연결하기 때문이에요.

EKS는 서브넷에 연결한 ENI에 보안 그룹을 연결해요. 이 보안 그룹은 ENI를 통해 EKS 컨트롤 플레인과의 트래픽을 허용해요. 이는 EKS Hybrid Nodes에 중요해요. 하이브리드 노드와 그 위에서 실행되는 Pod에서 EKS 컨트롤 플레인 ENI로 가는 트래픽을 허용해야 하기 때문이에요.

원격 노드 네트워크 (Remote Node Networks)

원격 노드 네트워크, 특히 원격 노드 CIDR은 하이브리드 노드로 사용하는 머신에 할당된 IP 범위예요. 하이브리드 노드를 프로비저닝하면, 그들은 EKS 컨트롤 플레인과 VPC와 다른 네트워크 도메인인 온프레미스 데이터 센터나 엣지 위치에 상주해요. 각 하이브리드 노드는 VPC의 서브넷과 구별되는 원격 노드 CIDR의 IP 주소(하나 또는 여러 개)를 가져요.

EKS 클러스터를 이러한 원격 노드 CIDR로 구성해 EKS가 kubelet API 요청 같은 하이브리드 노드 IP로 향하는 모든 트래픽을 클러스터 VPC를 통해 라우팅하도록 해요. kubelet API에 대한 연결은 kubectl attach, kubectl cp, kubectl exec, kubectl logs, kubectl port-forward 명령에 사용돼요.

원격 Pod 네트워크 (Remote Pod Networks)

원격 Pod 네트워크는 하이브리드 노드에서 실행되는 Pod에 할당된 IP 범위예요. 일반적으로 CNI를 이 범위로 구성하고, CNI의 IPAM(IP Address Management) 기능이 이 범위의 일부를 각 하이브리드 노드에 할당하는 작업을 처리해요. Pod를 만들면 CNI는 Pod가 스케줄링된 노드에 할당된 슬라이스에서 Pod에 IP를 할당해요.

EKS 클러스터를 이러한 원격 Pod CIDR로 구성해 EKS 컨트롤 플레인이 하이브리드 노드에서 실행되는 Pod로 향하는 모든 트래픽(예: 웹훅과의 통신)을 클러스터의 VPC를 통해 라우팅하도록 해요.

온프레미스에서 VPC로 (On-premises to the VPC)

하이브리드 노드에 사용하는 온프레미스 네트워크는 EKS 클러스터에 사용하는 VPC로 라우팅해야 해요. 온프레미스 네트워크를 VPC에 연결하는 데 사용할 수 있는 여러 Network-to-Amazon VPC 연결 옵션이 있어요. 자체 VPN 솔루션도 사용할 수 있어요.

AWS Cloud 쪽의 VPC와 온프레미스 네트워크 모두에서 라우팅을 올바르게 구성해, 두 네트워크가 연결을 통해 올바른 트래픽을 라우팅하도록 하는 것이 중요해요.

VPC에서는 원격 노드 및 원격 Pod 네트워크로 가는 모든 트래픽이 온프레미스 네트워크로 가는 연결("게이트웨이"라고 함)을 통해 라우팅되어야 해요. 일부 서브넷에 다른 라우팅 테이블이 있다면 각 라우팅 테이블에 하이브리드 노드와 그 위에서 실행되는 Pod에 대한 라우트를 구성해야 해요. 이는 EKS 컨트롤 플레인 ENI가 연결된 서브넷과, 하이브리드 노드와 통신해야 하는 EC2 노드나 Pod가 있는 서브넷 모두에 해당돼요.

온프레미스 네트워크에서는 EKS 클러스터의 VPC 및 하이브리드 노드에 필요한 다른 AWS 서비스와의 트래픽을 허용하도록 네트워크를 구성해야 해요. EKS 클러스터의 트래픽은 양방향으로 게이트웨이를 통과해요.

네트워킹 제약 조건 (Networking constraints)

완전히 라우팅된 네트워크 (Fully routed network)

주요 제약 조건은 EKS 컨트롤 플레인과 모든 노드(클라우드 또는 하이브리드 노드)가 완전히 라우팅된 네트워크를 형성해야 한다는 거예요. 즉 모든 노드가 레이어 3에서 IP 주소로 서로 도달할 수 있어야 해요.

EKS 컨트롤 플레인과 클라우드 노드는 평면 네트워크(VPC)에 있으므로 이미 서로 도달 가능해요. 하지만 하이브리드 노드는 다른 네트워크 도메인에 있어요. 그래서 하이브리드 노드와 클러스터의 나머지 사이에 트래픽을 라우팅하려면 VPC와 온프레미스 네트워크에 추가 라우팅을 구성해야 해요. 하이브리드 노드가 서로와 VPC에서 도달 가능하다면, 하이브리드 노드는 단일 평면 네트워크나 여러 분할 네트워크에 있을 수 있어요.

라우팅 가능한 원격 Pod CIDR (Routable remote pod CIDRs)

EKS 컨트롤 플레인이 하이브리드 노드에서 실행되는 Pod와 통신하려면(예: 웹훅 또는 Metrics Server) 또는 클라우드 노드에서 실행되는 Pod가 하이브리드 노드에서 실행되는 Pod와 통신하려면(워크로드 동서 통신), 원격 Pod CIDR이 VPC에서 라우팅 가능해야 해요. 즉 VPC가 게이트웨이를 통해 온프레미스 네트워크로 Pod CIDR에 트래픽을 라우팅할 수 있어야 하고, 온프레미스 네트워크가 특정 Pod의 트래픽을 올바른 노드로 라우팅할 수 있어야 해요.

VPC와 온프레미스에서의 Pod 라우팅 요구사항 사이의 차이를 구분하는 것이 중요해요. VPC는 원격 Pod로 가는 모든 트래픽이 게이트웨이를 통과해야 한다는 것만 알면 돼요. 원격 Pod CIDR이 하나만 있다면 라우트도 하나만 있으면 돼요.

이 요구사항은 하이브리드 노드와 같은 서브넷의 로컬 라우터까지 온프레미스 네트워크의 모든 홉에 적용돼요. 각 노드에 할당된 Pod CIDR 조각을 알아야 하는 라우터는 이 로컬 라우터가 유일해요. 특정 Pod의 트래픽이 Pod가 스케줄링된 노드에 전달되도록 보장하기 위해서예요.

이 라우트를 로컬 온프레미스 라우터에서 VPC 라우팅 테이블로 전파(propagate)하도록 선택할 수 있지만, 필수는 아니에요. 온프레미스 Pod CIDR이 자주 바뀌고 VPC 라우팅 테이블을 변경되는 Pod CIDR에 맞게 업데이트해야 한다면 온프레미스 Pod CIDR을 VPC 라우팅 테이블로 전파하는 것을 권장하지만, 이는 드문 경우예요.

온프레미스 Pod CIDR을 라우팅 가능하게 만드는 제약 조건은 선택 사항이라는 점에 유의하세요. 하이브리드 노드에서 웹훅을 실행하거나 클라우드 노드의 Pod가 하이브리드 노드의 Pod와 통신할 필요가 없다면 온프레미스 네트워크에서 Pod CIDR에 대한 라우팅을 구성할 필요가 없어요.

온프레미스 Pod CIDR이 하이브리드 노드에서 라우팅 가능해야 하는 이유는 무엇인가요?

클라우드 노드에 VPC CNI와 함께 EKS를 사용하면 VPC CNI가 VPC에서 직접 Pod에 IP를 할당해요. 즉 클라우드 Pod와 EKS 컨트롤 플레인 모두 Pod IP에 직접 도달할 수 있으므로 특별한 라우팅이 필요 없어요.

온프레미스(및 클라우드의 다른 CNI)에서 실행할 때 Pod는 일반적으로 격리된 오버레이 네트워크에서 실행되고 CNI가 Pod 간 트래픽 전달을 담당해요. 이는 일반적으로 캡슐화를 통해 수행돼요. CNI는 Pod 간 트래픽을 노드 간 트래픽으로 변환하고 양 끝에서 캡슐화와 역캡슐화를 처리해요. 이렇게 하면 노드와 라우터에 추가 구성이 필요 없어요.

하이브리드 노드의 네트워킹은 두 토폴로지의 조합을 제시하기 때문에 독특해요. EKS 컨트롤 플레인과 클라우드 노드(배포가 VPC CNI 포함)는 노드와 Pod를 포함한 평면 네트워크를 기대하는 반면, 하이브리드 노드에서 실행되는 Pod는 VXLAN을 사용한 캡슐화(Cilium의 기본값)로 오버레이 네트워크에 있어요. 하이브리드 노드에서 실행되는 Pod는 온프레미스 네트워크가 VPC로 라우팅할 수 있다면 EKS 컨트롤 플레인과 클라우드 노드에서 실행되는 Pod에 도달할 수 있어요. 하지만 온프레미스 네트워크에서 Pod CIDR에 대한 라우팅 없이는, 네트워크가 오버레이 네트워크에 도달하고 올바른 노드로 라우팅하는 방법을 모르면 온프레미스 Pod IP로 돌아오는 모든 트래픽이 결국 드롭돼요.

더 알아보기 (Learn more)