<서비스의 종류>
-
ClusterIP
-
cluster 내부용 서비스
-
-
NodePort
-
k8s 모든 노드(호스트)에 외부 접근용 포트를 할당.
-
노드의 포트를 사용하여 외부에서 접근 가능.
-
노드의 포트로 접근 -> 서비스에 의해 파드로 redirection
-
파드를 실행하고 있지 않는 노드에도 포트가 할당되고 접근 가능하다.
-
-
LoadBalancer
-
NodePort의 확장판
-
클러스터 외부의 loadbalancer를 사용하여 외부에서 접근 가능
-
외부 loadbalancer로 접근하면 서비스를 통해 파드로 redirection
-
클라우드 공급업체(AWS, GCP 등)에서 지원하는 기능.
-
-
External Name
-
외부에서 접근하기 위한 종류 아님.
-
외부의 특정 FQDN에 대한 CNAME 매핑을 제공
-
파드가 CNAME을 이용해 특정 FQDN과 통신하기 위함.
-
1. 외부 서비스용 replicaset 생성 및 확인
- 컨트롤러 및 파드 생성
2. LoadBalancer 서비스 생성
- 클라우드 인프라에서 LoadBalancer 서비스를 생성하면 클라우드 인프라의 LoadBalancer를 자동으로 프로비저닝 하게 된다. -> 이 LoadBalancer를 통해 서비스와 파드에 접근 가능.
- On-premise의 bare-metal 또는 가상머신에 배포하거나, public clode의 관리형 kubernetes가 아닌 가상 머신에 직접 설치한 경우 -> MetalLB
# myapp-svc-loadbalancer.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp-lb
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
selector:
app: myapp-rs
- LoadBalancer 서비스 생성
kubectl create -f myapp-svc-loadbalancer.yaml
3. LoadBalancer 서비스 확인
- 클라우드의 관리형 쿠버네티스 서비스 및 MetalLB를 사용하지 않는 경우
- 외부 로드밸런서가 프로비저닝 되지 않기 때문에 외부 IP( LoadBalancer IP)가 할당되지 않는다.
- 실제 외부 LoadBalancer를 사용할 수 있는 경우, 외부의 LoadBalancer가 생성되고 IP가 할당되기까지 시간이 필요하다.
- LoadBalancer 서비스의 IP로 접근.
- LoadBalancer를 통해 부하분산이 이루어지는 것을 확인할 수 있다.
4. 서비스 삭제
kubectl delete svc myapp-lb
'Containers > Kubernetes' 카테고리의 다른 글
클러스터 외부 서비스 - ExternalName (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 |
댓글