Service 요소 개요
- 서비스의 selector와 pod의 label이 연결이 되면 서비스 레지스트리의 주소들이 연결이 됨
- 만약 pod가 삭제되면 서비스 레지스트리의 주소도 삭제됨
- ClusterIP는 쿠버네티스 내에서 Pod 통신을 의미
- NodePort, LoadBalancer, ExternalIPs 는 쿠버네티스 외부에서 내부로 들어오는 통신을 의미하며 이를 서비스 퍼블리싱이라 부름
- NodePort의 경우 CluterIP로 변환하여 서비스와 연결하며 LoadBalancer는 NodePort로 변환하여 연결함
- 실무에서는 LoadBalancer를 주로 사용하며 ExternalName은 테스트 용도로 주로 사용
- clusterIP의 이름을 None으로 바꾸면 headless service가 되며 이때는 바로 Pod의 Ip를 알 수 있음
- 평소에는 사용하지 않으며 DB와 같이 Stateful한 서비스에서 주로 사용
- 백엔드 서버에서 둘 다 설정하여 맞추어서 요청을 보냄
- 서비스의 externalName사용 시 DNS의 이름이 바뀌어서 요청이 보내지기 때문에 https 통신에서는 사용을 못함
- 내부 http 통신이 아닌 이상은 잘 사용하지 않음
인프라 구성과 Service
- master node와 worker node 둘다 kube-proxy가 만들어져서 iptables를 조작함
- 외부에서 요청(+ 내부 서버)이 들어오면 LoadBalancer를 통해 pod로 트래픽이 들어감
- CNI는 따로 존재하기 때문에 트래픽을 잘 전달 가능
- 테스트용 서버에서 ExternalIP로 테스트 용도로 사용이 가능함
- 만약 서버의 에러가 있을 시 Pod에 DNS를 직접 설정하여 테스트 서버에 요청 가능
출처: https://inf.run/Ln688