본문 바로가기
Containers/Kubernetes

클러스터 외부 서비스 - ExternalName

by shinebee* 2020. 8. 23.

<서비스의 종류>

  • ClusterIP

    • cluster 내부용 서비스

  • NodePort

    • k8s 모든 노드(호스트)에 외부 접근용 포트를 할당.

    • 노드의 포트를 사용하여 외부에서 접근 가능.

    • 노드의 포트로 접근 -> 서비스에 의해 파드로 redirection

    • 파드를 실행하고 있지 않는 노드에도 포트가 할당되고 접근 가능하다.

  • LoadBalancer

    • NodePort의 확장판

    • 클러스터 외부의 loadbalancer를 사용하여 외부에서 접근 가능

    • 외부 loadbalancer로 접근하면 서비스를 통해 파드로 redirection

    • 클라우드 공급업체(AWS, GCP 등)에서 지원하는 기능.

  • External Name

    • 외부에서 접근하기 위한 종류 아님.

    • 외부의 특정 FQDN에 대한 CNAME 매핑을 제공

    • 파드가 CNAME을 이용해 특정 FQDN과 통신하기 위함.

 

 

1. ExternalName 서비스 생성

  • ExternalName 서비스는 NodePort 및 LoadBalancer와 다르게 외부에서 접근하기 위한 서비스 종류가 아닌, 내부 파드가 외부의 특정 FQDN에 쉽게 접근하기 위한 서비스이다.
  • 즉, k8s cluster의 coredns 서비스가 특정 FQDN에 대한 CNAME(서비스의 FQDN)을 제공함에 따라 해당 CNAME을 이용하여 쉽게 통신할 수 있다.
  • 접속하기 위한 외부 FQDN 주소가 바뀌더라도, CNAME은 그대로 유지할 수 있어 애플리케이션을 다시 작성하거나 빌드하지 않아도 된다.
  • FQDN(Fully Qualified Domain Name) : 호스트 이름과 도메인 이름을 포함한 전체 도메인 이름을 일컫는 용어이다.
  • CNAME : 도메인 별명

 

# myapp-svc-extname.yaml

apiVersion: v1
kind: Service
metadata: 
  name: myapp-extname
spec:
  type: ExternalName
  externalName: www.google.com
  • 외부 FQDN : www.google.com
  • CNAME : myapp-extname
  • pod와 매칭 하지 않기 때문에 label selector는 없다.

 

  • ExternalName 서비스 생성.
kubectl create -f myapp-svc-extname.yaml 

 

 

2. ExternalName 서비스 확인

  • 서비스 타입 : ExternalName
  • 외부 IP : www.google.com의 FQDN 할당.
  • pod는 myapp-extname(CNAME)을 사용하면 www.google.com의 주소를 알 수 있다.

 

  • 네트워크 도구를 가지고 있는 파드를 실행해 확인.

 

 

3. 서비스 삭제

kubectl delete svc myapp-extname

'Containers > Kubernetes' 카테고리의 다른 글

클러스터 외부 서비스 - LoadBalancer  (0) 2020.08.23
클러스터 외부 서비스 - NodePort  (0) 2020.08.22
5.2. Service 탐색  (1) 2020.08.10
5.1. Cluster 내부 서비스  (0) 2020.08.03
4.4. DaemonSet  (0) 2020.07.29

댓글