Cloud/Kubernetes

[따배쿠] 7-1, 2. 쿠버네티스 Service 개념과 종류 + 실습

Tony Lim 2022. 2. 11. 14:57

service api == app:webui 라는 label을 가지고 (여기서는 3개의 pod)를 하나로 묶는다. 그리고 이 3개를 대표하는 virtual ip (cluster ip)를 하나 만들어준다. 즉 Load Blanacer IP가 만들어진다.

위의 정보는 etcd에 기록이 된다.

 

 

 

Service type

ClusterIP = Pod 그룹의 단일점 (Virutal IP) 생성, 제일 기본적인 기능 , 내부 통신용

NodePort = ClusterIP 가 생성된 후 , 모든 Worker Node 에 외부에서 접속가능한 포트가 예약 , 밖에 클라이언트가 해당 포트와 worker node 의 ip 에 접속을 시도하면 저 묶인 pod중 하나로 연결을 해준다.

위의 2개는 다 cluster안에서 만 서로 트래픽을 주고 받는거임 외부에서 들어오는것은 ingress를 이용하는게 best임

 

Load Balancer == aws,gcp 이런 클라우드 플랫폼 위에서만 가능하다고 한다. 예제를 봐야알듯

External Name = 클러스터 안에서 바깥으로 라우팅 해주는 역할 , DNS이긴 한데 거꾸로 간다 

 

 

 

 

앵간하면 랜덤하게 지정하게 냅둔다. 충돌방지를 위해서

deployment 를 먼저 실행시켜서 pod 3개를 실행시킨후에 service를 실행시킬 수 있다.

endpoint 3개중 하나로 routing 된다.

kubectl scale deployment webui --replicas=5 로 늘리면 그것들의 lable 이 같으니까 endpoints 에 알아서 추가 되어진다. 줄이는것도 마찬가지이다.

 

 

 

client가 열린 NodePort로 접속을 할 수 있다.

해당 worker node ip의 port(Nodeport)에 접속을 시도하면 3개의 pod중 한개로 포워딩 해준다.

이런 느낌이다

 

 

외부 클라이언트는 LB에 요청을 보내면 LB에서 포워딩을 해주는 것이다.

근데 여전히 LB -> worker node Nodeport로 가면 거기서 부터는 또 3개의 pod가 랜덤으로 포워딩 된다고 한다..?

NodePort를 연후에 외부에 L4(LB) 장비 세팅해주세요 라고 요청하는 느낌이다.

따로 열 필요 없음 type: LoadBalancer 하면 자신만의 NodePort를 하나 지가 연다.

LB가 새롭게 NodePort 연것을 확인 33238 

Cluster IP -> Node Port -> LB 범위가 단계적으로 확장된다.

 

 

curl externalname.svc.default.svc.cluster.local 명령어를 치면 google.com으로 포워딩 시켜준다?

default.svc.cluster.local 는 쿠버네티스가 사용하는 도메인이름이다.