Kubernets Ingress
클러스터 외부에서 서비스에 접근할 수 있는 방법은 NodePort, LoadBalancer, Ingress 등이 존재
- ClusterIP
cluster-internal IP를 노출
외부와 통신하기 위해서는 추가적인 netfilter설정이 필요
- NodePort
고정 포트로 각 노드의 IP를 서비스에 노출
노드가 사라졌을 때 자동으로 다른 노드를 통해 접근 불가능
변경사항 발생시 직접 반영
- LoadBalancer
LB통해서 서비스를 외부에 노출
각 서비스별 자체 IP주소와 LB연결이 필요
서비스별로 LB를 붙여야해서 비용이 증가
- Ingress
여러 서비스를 하나의 Ingress로 노출 가능
request 받아서 어느 서비스로 보낼지 결정
(참고)각각 차이에 대해 이해하기 쉽게 정리된 글입니다.
https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0
Ingress, Ingress Controller
Ingress는 클러스터 내 서비스에 대한 외부 접근을 관리하는 API 오브젝트
Ingress resource를 통해 서비스를 외부에 노출시킴
Ingress controller가 필요한 이유는?
- Ingress는 단지 규칙을 정의하는 선언적 Object
- Ingress controller를 통해 적용되어야만 사용 가능
- Ingress controller가 외부로부터 네트워크 요청을 받았을때 Object규칙을 통해 처리함
- 각각 다양한 Kubernertes(GCP, AWS 등)에 따라 제공하는 controller를 사용하거나 직접 구동 가능
Ingress를 통해 서비스로 연결되는 순서
1. client가 DNS look up, Ingress controller의 ip를 받음
2. Ingress controller에 host정보를 담은 request를 보냄
3. 컨트롤러에서 어느 서비스에 접근하려는지 확인, Ingress에서 각 service 의 endpoints를 갖고 있음
4. 서비스에 연결된 파드에 직접 요청을 보냄
이외에도 readiness probe, headless-service, TLS적용 등 학습이 필요합니다.
'개발 > 개발공부' 카테고리의 다른 글
cgroups / 컨테이너 기초, 프로세스 제어, 자원 제한 (1) | 2023.01.03 |
---|---|
Container 사전지식 / 리눅스, 권한, 컨테이너, 파일, 시스템콜 (0) | 2023.01.01 |
Kubernetes Components (Worker Node) / 쿠버네티스 컴포넌트, 워커 노드, 노드 컴포넌트 (0) | 2022.12.28 |
Kubernetes Components (Control plane) / 쿠버네티스 컴포넌트, 마스터, 컨트롤 플레인 (4) | 2022.12.27 |
Kubernetes Readiness Probe / 쿠버네티스 healthcheck, pod ready state (0) | 2022.12.25 |
댓글