IT 강의/도커 쿠버

[CKA 강의 요약] Services - Loadbalancer

rnany 2024. 6. 25. 21:15

Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests  강의의 38. Services - Loadbalancer  챕터를 공부한 내용으로 강의 내용과 다를 수 있습니다. 정확한 내용은 강의를 들으시는 것을 추천드립니다.


1. Load Balancer

상단 구성의 Voting app 예시를 통해 Load Balancer 서비스에 대해 알아본다.

이전 챕터에서 배운 Nodeport 서비스는 worker node 포트에서 외부 애플리케이션을 사용할 수 있도록 해줬다.

 

상위 구성에서 프론트엔드 어플리케이션을 집중 해보자. 'Voting-App'과 'Result-APP' Pod들은 클러스터의 worker node에서 호스팅 된다. 상위 구성처럼 클러스터에 4개의 워커노드가 있다고 가정 하고 Nodeport 타입의 서비스를 생성하여 외부 유저가 애플리케이션에 접근 할 수 있도록 한다. Node port 타입 service는 노드로 들어오는 트래픽을 수신하고 각 노드에 트래픽을 라우팅하는데 도움을 준다.

이때, 사용자가 애플리케이션에 접근 할 때 node의 IP와 포트를 통해 두 애플리케이션에 접근하게 된다. 따라서 사용자는 Voting-App'에 4개, 'Result-APP'에 4개 IP와 port 조합으로 접근 하게 된다.

두 개의 노드에서만 pod가 호스팅 되는 경우에도 여전히 클러스터에 있는 모든 노드의 IP로 접근 할 수 있다. 'Voting-App'에 대한 pod가 IP가 70, 71로 끝나는 두 노드에 위치한다고 가정한다. 그 pod들은 여전히 모든 노드 IP로 접근 가능하다. 이것이 service가 구성되는 방식이다.

 

IP와 Port로된 URL을 공유하여 사용자가 애플리케이션에 접근 할 수 있도록 할 수 있지만, 엔드 유저는 http://example-vote.com 이나 http://example-result.com과 같은 단순한 URL로 프로그램에 접근하길 원한다. 이는 로드밸런서 용 새 VM을 생성해 로드밸런서를 AJ/Proxy, ngingx 등 적합한 load balancer를 설치하는 것으로 해결 할 수 있다. 그 다음엔, 노드들에 트래픽을 라우팅하도록 로드밸런서를 구성한다.

 

이제 외부 로드 밸런싱을 모두 설정하고 관리를 하는 것은 지루한 작업이 될 수 있다. 그러나, Google Cloud, AWS, Azure와 같은 클라우드 플랫폼에 있다면 클라우드 플랫폼의 기본 로드 밸런서를 활용할 수 있다. Kubernetes는 클라우드 공급자의 네이티브 로드밸런서를 사용하는 것을 지원한다. 프론트 엔드의 서비스 타입 Node port 대신 load balancer로 설정하기만 하면 된다.

이런 지원은 GCP, AWS 및 Azure등의 지원 가능한 클라우드 플랫폼에서만 제공된다. VirtualBox나 다른 지원되지 않는 환경에서 service 타입을 LoadBalancer로 입력했을 경우에는 Node port로 설정한 것과 동일한 효과가 나타납니다. 나중에 데모를 살펴볼 때 클라우드 플랫폼에 애플리케이션을 배포할 것이고, 오늘 배운 내용을 실제로 보게 될 것이다.