일반적으로 로드밸런서라는 말을 자주 사용하지만, 사실 '로드밸런서'는 적어도 두 가지 이상의 의미가 혼용되고 있다고 생각한다.
때문에 k8s환경에서 '로드밸런서 타입의 서비스' 와 '인그레스'의 역할을 혼동하는 일이 생긴다.
'로드밸런서' 는 적어도 다음의 두 가지 의미가 있다.
L4는 TCP/IP 레벨이다. IP, 포트번호 등이 분산의 기준임. 따라서 k8s의 서비스가 L4레벨의 스위치 역할을 한다고 생각하면 된다.
클라이언트는 보통 VIP([[GSLB, VIP]])로 요청하고 이를 L4가 받아서 연결을 분산시켜준다. k8s의 로드밸런싱 타입의 서비스는 외부 클라우드 제공자가 생성한 L4로드밸런서에 VIP를 붙여주는 역할을 한다. -> 즉, 서비스의 ExternalIP가 VIP가 된다.
L7은 애플리케이션, 특히 http 레벨이다. 헤더, url, 프로토콜, http메서드 등이 분산의 기준임. 따라서 k8s에서는 인그레스 컨트롤러가 L7레벨의 게이트웨이 담당을 한다.
인그레스는 애플리케이션 레벨의 추가 동작들, TLS 종료, 리다이렉션, 리라이트, 인증과 같은 기능도 담당하고 있다.
여기서 더 혼동할만한 여지는 공유기와 L4의 차이이다.
결론만 말하자면 둘 다 하나의 IP를 목적지로 갖고온 트래픽을 다른 IP로 나눠주는 것 같아 보이지만 공유기는 L3 라우터 에 속해있다고 말하는게 더 적절하다.
이는 '분산'이라는 개념을 통해 명확히 구분 가능.
L3라우터, 특히 공유기는 공인 IP를 사설 IP로 변환시키고(이를 NAT, Network Address Translation이라고 한다.), 사설 IP:포트 번호를 기반으로 정확한 목적지로 '안내'하는 역할을 한다. 이 안내는 공유기가 갖고 있는 라우팅 테이블을 기반으로 한다.
반면 L4LB는 특정 IP:포트번호를 들고온 트래픽을 자기 나름의 규칙에 따라 '분산'시켜주는 역할을 한다.
즉 L4는 자체의 규칙(라운드 로빈 등)이 있음. L3는 그저 매핑된 테이블에 따라 안내할 뿐임. 이게 '분산'한다는 것의 의미 차이이다. L4는 분산(distribution), L3는 경로 선택, 그래서 라우터라고 하는 것.