클러스터 외부 네트워킹
이 섹션에서는 클러스터 외부의 트래픽이 Kubernetes 클러스터 내에서 실행되는 애플리케이션에 도달하는 방법을 설명합니다. 이 정보는 클러스터의 애플리케이션 및 워크로드를 설계할 때 중요합니다.
Kubernetes가 서비스를 사용하여 Pod 내에서 실행되는 애플리케이션에 안정적인 IP 주소를 제공하는 방법에 대해 이미 읽었습니다. kube-proxy가 각 노드의 모든 트래픽을 관리하기 때문에 기본적으로 Pod는 외부 IP 주소를 노출하지 않습니다. Pod와 해당 컨테이너는 자유롭게 통신할 수 있지만 클러스터 외부의 연결은 서비스에 액세스할 수 없습니다. 예를 들어, 이전 그림에서 클러스터 외부의 클라이언트는 해당 ClusterIP를 통해 프런트엔드 서비스에 액세스할 수 없습니다.
GKE는 액세스를 제어하고 클러스터 전체에 가능한 한 균등하게 들어오는 트래픽을 분산하기 위해 세 가지 유형의 부하 분산기를 제공합니다. 여러 유형의 로드 밸런서를 동시에 사용하도록 하나의 서비스를 구성할 수 있습니다.

 

  • External Load Balancers : 외부 부하 분산기는 클러스터 외부 및 Google Cloud Virtual Private Cloud(VPC) 네트워크 외부에서 들어오는 트래픽을 관리합니다. GCP 네트워크와 연결된 전달 규칙을 사용하여 트래픽을 Kubernetes 노드로 라우팅합니다.
  • Internal Load Balancers  : 내부 부하 분산기는 동일한 VPC 네트워크 내에서 들어오는 트래픽을 관리합니다. 외부 부하 분산기와 마찬가지로 GCP 네트워크와 연결된 전달 규칙을 사용하여 트래픽을 Kubernetes 노드로 라우팅합니다.
  • HTTP(S) Load Balancers  : HTTP(S) 로드 밸런서는 HTTP(S) 트래픽에 사용되는 특수 외부 로드 밸런서입니다. 트래픽을 Kubernetes 노드로 라우팅하기 위해 전달 규칙 대신 Ingress 리소스를 사용합니다.

 

트래픽이 Kubernetes 노드에 도달하면 로드 밸런서 유형에 관계없이 동일한 방식으로 처리됩니다. 로드 밸런서는 클러스터의 어떤 노드가 해당 서비스에 대해 포드를 실행하고 있는지 인식하지 못합니다. 대신 관련 Pod를 실행하지 않는 노드를 포함하여 클러스터의 모든 노드에서 트래픽의 균형을 유지합니다. 지역 클러스터에서 로드는 클러스터 지역의 모든 영역에 있는 모든 노드에 분산됩니다. 트래픽이 노드로 라우팅되면 노드는 트래픽을 동일한 노드 또는 다른 노드에서 실행 중인 Pod로 라우팅합니다. 노드는 kube-proxy가 노드에서 관리하는 iptables 규칙을 사용하여 무작위로 선택된 파드로 트래픽을 전달합니다.

 

Container-native load balancing

컨테이너 네이티브 로드 밸런싱을 사용하면 여러 종류의 로드 밸런서가 Pod를 직접 대상으로 지정하고 해당 트래픽을 Pod에 고르게 분산할 수 있습니다.
컨테이너 네이티브 로드 밸런싱은 NEG(네트워크 엔드포인트 그룹)라는 데이터 모델을 활용합니다. NEG는 IP 포트 쌍으로 표시되는 네트워크 끝점의 모음입니다.
NEG를 GKE 인그레스와 함께 사용하면 인그레스 컨트롤러가 L7 부하 분산기의 모든 측면을 쉽게 생성할 수 있습니다. 여기에는 가상 IP 주소 생성, 전달 규칙, 상태 확인, 방화벽 규칙 등이 포함됩니다.
유연성을 높이기 위해 독립 실행형 NEG를 만들 수도 있습니다. 이 경우 L7 로드 밸런서의 모든 측면을 만들고 관리해야 합니다.

 

'쿠버네티스' 카테고리의 다른 글

쿠버네티스 Cluster 설치하기 - on ubuntu linux  (0) 2022.05.05
CNI 플러그인 모드  (0) 2022.05.04
쿠버네티스 - katacoda  (0) 2022.04.26
쿠버네티스란 무엇인가?  (0) 2022.04.25
GCP - Kubernetes Engine(GKE)  (0) 2022.03.22

+ Recent posts