따배쿠

[따배쿠] 7-2. 쿠버네티스 Service 4가지 종류 실습해보기

Engineer-Lee 2022. 11. 6. 16:05
반응형

clusterip는 단일 진입점을 만들어주는 가장 기본적인 service 타입이다.

충돌방지를 위해서 랜덤하게 지정하도록 둔다.

 

 

clusterip-nginx.yaml 파일의 내용은 아래와 같다.

 

deploy-nginx.yaml 파일의 내용은 아래와 같다.

 

먼저 deploy-nginx.yaml을 이용해 nginx 웹서버 3개를 운영해주고 clusterip를 부여해야 한다.

고로 kubectl create -f deploy-nginx.yaml 를 입력하고 

 

kubectl create -f clusterip-nginx.yaml로 클러스터ip를 파드에 연결시킨다.

그럼 clusterip가 10.100.100.100으로 생성됐다.

이제 curl 10.100.100.100 로 3개의 pod중 한개의 pod로 랜덤하게 연결할 수 있다.

 

kubectl scale deployment webui --replicas=5 로 늘리면 pod들의 레이블이 같으니까 endpoints에 알아서 추가된다.

줄이는것도 마찬가지다.

 

kubectl delete service --all로 모든 service를 삭제할 수 있다.

 

 

 

nodeport는 clusterip의 기능에 포트까지 예약할 수 있는 service 타입이다.

client는 열린 nodeport로 접속할 수 있다.

 

nodeport-nginx.yaml 파일의 내용은 아래와 같다,

clusterip는 10.100.100.200으로 설정하고 nodeport는 30200번이다.

 

kubectl create -f nodeport-nginx.yaml으로 nodeport service를 실행한다.

 

 

 

node에 ssh접속해서 netstat -napt | grep 30200 으로 30200번 포트가 연결되어 listen 상태인걸 확인할 수 있다.

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

 

 

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

LB 에서 worker node Nodeport로 가면 3개의 pod로 다시 포워딩 된다.

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

 

먼저 loadbalancer-nginx.yaml파일의 내용은 아래와 같다.

 

kubectl create -f loadbalancer-nginx.yaml로 로드밸런서를 동작시킨다.

 

LB가 새롭게 NodePort로 31671번을 연것을 볼 수 있다.

 

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

 

 

 

curl externalname.svc.default.svc.cluster.local 명령어를 치면 google.com(externalName 설정값)으로 포워딩 시켜준다.

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

반응형