[K8s] NodePort VS LoadBalancer VS Ingress
너무 헷갈려서 정리..😢
ClusterIP
클러스터 내의 다른 앱이 접근할 수 있게 해준다. 외부 접근이 되지 않는다.
쿠버네티스 proxy를 통해선 접근이 가능하다.
외부로 노출되지 않고 클러스터 내에서만 접근 가능한 서비스에 적합하다.
ExternalName
외부서비스를 쿠버네티스 내부에서 호출하고자 할 때 사용한다.
Selector가 아닌 DNS 이름을 사용하는 특수한 서비스다.
NodePort
서비스에 외부 트래픽을 직접 보낼 수 있는 방법이다.
모든 Node에 특정 포트를 열어두고, 이 포드로 보내지는 모든 트래픽을 서비스로 포워딩한다.
개발 및 테스트 환경에서 주로 사용된다.
LoadBalancer
Load Balancer를 작동시켜 모든 트래픽을 서비스로 포워딩하는 IP 주소를 제공한다.
외부 트래픽을 로드밸런서로 전달하여 클러스터 내부의 서비스로 라우팅한다.
보통 클라우드 벤더(AWS, GCP 등)에서 제공하는 설정 방식이다.
GKE와 AWS에서는 Network Load Balancer를 생성한다.
프로덕션 환경에서 주로 사용한다.
Ingress
클러스터 내부에서 외부로의 액세스를 제어할 때 사용한다.
HTTP및 HTTPS 트래픽을 처리하고, 여러 서비스들 앞에서 라우터 역할을 하거나 entrypoint 역할을 한다.
GKE ingress 컨트롤러는 HTTP(s) Load Balancer를 생성해주며,
AWS ingress 컨트롤러는 Application Load Balancer를 생성해준다.
L7단 백엔드 서비스로 경로(Path)와 서브 도메인 기반의 라우팅을 모두 지원한다.
SSL 인증서를 지원하기 때문에, 고급 라우팅 및 인증 기능이 필요한 경우 주로 사용된다.
L7 프로토콜을 사용하는 여러 서비스들을 같은 IP주소로 외부에 노출한다면 Ingress가 가장 유용하다.
참고
https://blog.leocat.kr/notes/2019/08/22/translation-kubernetes-nodeport-vs-loadbalancer-vs-ingress
'🐳 Container > K8S' 카테고리의 다른 글
[Minikube] Windows에 Minikube 설치 (0) | 2023.08.24 |
---|---|
[K8s] 컨피그 맵(Config map) (0) | 2023.08.18 |
[K8s] helm chart를 이용하여 GKE에 jenkins 설치 (0) | 2023.07.13 |
[K8s] Helm (0) | 2023.06.25 |
[K8s] 쿠버네티스(Kubernetes) Volume 관리 (0) | 2023.04.09 |