제11장. 클러스터 이그레스
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
클러스터 내부 트래픽을 제어하는 방법을 알았으니, 이제 패킷이 클러스터를 떠날 때 제어하는 방법에 집중해 보겠습니다.
컨테이너화된 애플리케이션과 쿠버네티스 네트워킹의 ' ' 특성은 패킷의 발신처를 파악해야 하는 엔지니어와 운영자에게 가시성 부족을 초래할 수 있습니다. 실제로 기본적으로 패킷이 클러스터를 떠날 때 Cilium은 발신 포드의 소스 IP 주소를 해당 포드가 실행 중인 노드의 IP 주소로 대체합니다.
이 기능은 ' masquerading'으로 알려져 있으며, 본 장의 출발점이 될 것입니다. 마스커레이딩이 필요한 이유, 사용 가능한 두 가지 모드(eBPF와 iptables), 그리고 이를 사용자 정의하는 방법을 설명하겠습니다. 본 장의 대부분은 클러스터를 떠나는 트래픽에 출구 IP 주소와 인터페이스를 결정론적으로 할당하는 기능인 Egress Gateway에 할애할 것입니다. 마지막으로, 대역폭을 많이 소모하는 포드의 트래픽을 속도 제한할 수 있는 덜 알려진 출구 트래픽 제어 기능인 Cilium의 Bandwidth Manager를 살펴보겠습니다.
본 장에서 사용할 모든 YAML 매니페스트는 책의 GitHub 저장소 내 chapter11 디렉터리에서 확인할 수 있습니다.
자, 시작해 보겠습니다!
마스커레이딩
쿠버네티스 설계 원칙의 한 가지 는 공유 인프라 전반에 걸쳐 워크로드에 대한 격리를 제공하는 것입니다. 그러나 클러스터 내 애플리케이션은 이를 위해 기본 네트워크를 사용하지 않고 내부 pod 네트워크를 사용합니다.
PodCIDR 네트워크는 일반적으로 RFC 1918 사설 주소 블록에서 할당되므로 라우팅이 불가능합니다(이전 장에서 알 수 있듯이, 내부 애플리케이션에 대한 액세스는 일반적으로 포드 IP를 직접 사용하는 것이 아니라 외부 서비스에 대한 액세스를 통해 이루어집니다). 원본 파드로 트래픽을 되돌려 보내야 하는 외부 엔터티는 대부분의 경우 파드 네트워크에 도달하는 방법을 알지 못합니다. 그러나 노드 IP 범위는 라우팅 가능하므로 쿠버네티스 노드에는 접근할 수 있어야 합니다. 이러한 이유로 Cilium은 기본적으로 클러스터를 떠나는 모든 트래픽의 소스 IP 주소를 노드의 IPv4/IPv6 주소로 자동 변장(마스커레이드) 합니다.
마스커레이딩은 다대일 주소 변환을 수행하는 SNAT( )의 한 형태로, 여러 소스 IP 주소를 단일 주소 뒤에 숨깁니다. 쿠버네티스에서는 이 주소가 노드 IP 주소입니다.
그림 11-1은 IP 주소 10.244.1.3을 가진 포드에서 전송된 패킷의 예를 보여줍니다. Cilium은 이를 변장하여 소스 IP를 노드의 IP인 172.18.0.3으로 설정합니다.
그림 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access