본문 바로가기
Kubernetes(k8s)/따배쿠(따라하면서 배우는 쿠버네티스) 학습

[k8s]Kubernetes - Service 4가지 종류

by 열정주니어 2023. 3. 9.
반응형

ClusterIP

  • selector의 label가 동일한 파드들을 그룹으로 묶어 단일 진입점 (Virtual IP)을 생성
  • 클러스터 내부에서만 사용 가능
  • type 생략 시 default 값으로 10.96.0.0/12 범위에서 할당 됨
    • type을 고정시키지 않는 이유: 충돌을 예방하기 위해

 

Example

  • create -f를 통해 ClusterIP Service 실행
    • kubectl create -f clusterip-nginx.yaml
  • get, describe를 통해  ClusterIP Service확인
    • kubectl get service
    • kubectl describe svc clusterip-service
  • curl 이용 ClusterIP 접속
    • curl 10.100.100.100
  • delete를 통해 ClusterIP Service 삭제 
    • kubectl delete svc clusterip-service

 

NodePort

  • 모든 노드를 대상으로 외부 접속 가능한 포트를 예약
    • ClusterIP는 클러스터 내부에서만 사용 가능한 반면 NodePort 이용시 해당 포트로 외부에서 접속 가능
    • NodePort는 외부에서 접근할 수 있도록 도움
  • Default NodePort 범위: 30000-32767
  • ClusterIP를 생성 후 NodePort를 예약

 

Example

  • create -f를 통해 NodePort Service 실행
    • kubectl create -f nodeport-nginx.yaml
  • get, describe를 통해  NodePort Service확인
    • kubectl get service
    • kubectl describe svc nodeport-service
  • curl 이용 외부 접속
    • curl node1.example.com:30200
  • delete를 통해 NodePort Service 삭제 
    • kubectl delete svc nodeport-service

 

LoadBalancer

  • Public 클라우드(AWS, Azure, GCP 등)에서 운영 가능
  • LoadBalancer를 자동으로 구성 요청
  • NodePort를 예약 후 해당 nodeport로 외부 접근을 허용

 

Example

  • create -f를 통해 LoadBalancer Service 실행
    • kubectl create -f loadbalancer-nginx.yaml
  • get을 통해  LoadBalancer Service확인
    • kubectl get service
  • delete를 통해 LoadBalancer Service 삭제 
    • kubectl delete svc loadbalancer-service

 

ExternalName

  • 클러스터 내부에서 External(외부)의 도메인을 설정
    • ExternalName은 DNS(Domain Name Service)를 지원
    • 클러스터 내부에서 외부로 나갈 수 있는 도메인 등록
    • 쿠버네티스 도메인이 외부 도메인으로 치환

 

Example

  • create -f를 통해 ExternalName Service 실행
    • kubectl create -f externalname.yaml
  • get을 통해  ExternalName Service확인
    • kubectl get service
  • curl 이용 쿠버네티스 도메인 접속 -> 외부 도메인 치환되어 접속 (클러스터 내의 pod에서 작동)
    • curl externalname-svc.default.svc.cluster.local
    • externalname-svc: ExternalName Service 이름
    • default.svc.cluster.local: 쿠버네티스 도메인
  • delete를 통해 ExternalName Service 삭제 
    • kubectl delete svc externalname-svc

 

Reference

따배쿠25강

 

반응형