반응형
## 서비스 (Service)
- 쿠버네티스에서의 서비스는 파드에 접근할 수 있도록 정책을 정의하는 것이다.
- 서비스는 파드끼리 통신할 수 있도록 엔드포인트를 만들어 주고, 파드가 외부에 노출될수 있도록 한다.
- 그럼 앞에서 디플로이먼트를 설명하면서 생성한 nodejs-app 파드를 서비스를 사용하여 노출해보자.
- 서비스에 사용할 수 있는 많은 옵션과 다른 패턴들도 있지만, 여기서 핵심은 중요한 오브젝트의 정의 및 기능을 알아본다.
- ClusterIP : 서비스가 클러스터-내부 IP에 노출되도록 한다. 이 값을 선택하면 클러스터 내에서만 서비스에 도달할 수 있다. 이것은 ServiceTypes 의 기본 값이다.
- NodePort : 고정포트로 각 노드의 IP 에 서비스가 노출되도록 한다. NodePort 서비스가 라우팅 되는 ClusterIP 서비스가 자동으로 생성된다.
<NodeIP>:<NodePort>를 요청하여, 클러스터 외부에서 NodePort 서비스에 접속할 수 있다.
- LoadBalancer : 클라우드 공급자의 로드 밸런서를 사용하여 서비스가 외부에 노출되도록 한다.
외부 로드 밸런가 라우팅되는 NodePort와 ClusterIP 서비스가 자동으로 생성된다.
- ExternalName : 값과 함께 CNAME 레코드를 리턴하여, 서비스를 externalName 필드의 콘텐츠에 매핑한다. 이때 어떤 종류의 프록시도 설정되어 있지 않다.
- 이 네가지 옵션은 서비스가 파드를 노출해 줄수 있는 방식을 나타낸 것이다.
- 지금은 쿠버네티스 자체를 학습하는 것이 중요하기 때문에 쿠버네티스만으로 실행 할 수 있는 ClusterIP, NodePort만 실습해보자.
- 그리고 외부에 디플로이먼트가 노출되도록 해보자.
ubuntu@ip-10-0-1-52:~/deployment$ kubectl apply -f nodejs.yaml
ubuntu@ip-10-0-1-52:~/deployment$ kubectl expose deploy nodejs-app
- 이전에 생성한 디플로이먼트를 사용하여 서비스를 생성하는 명령을 실행했다.
- 명령문에 아무런 옵션을 지정하지 않으면 ClusterIP 옵션이 자동으로 부여된다.
- ClusterIP 옵션은 앞에서 봤듯이 클러스터 내부IP 에 노출하는 것이다.
ubuntu@ip-10-0-1-52:~/deployment$ kubectl get svc
ubuntu@ip-10-0-1-52:~/deployment$ kubectl get svc nodejs-app
- 그럼 외부에 노출되도록 하려면 어떻게 해야 할까? NodePort 옵션을 사용하면 된다.
ubuntu@ip-10-0-1-52:~/deployment$ kubectl expose deploy nodejs-app --type=NodePort
- --type=NodePort 옵션의 사용 유무에 따라 외부에 노출되는 포트가 부여되는지 결정된다.
반응형
'[AWS]' 카테고리의 다른 글
파드와 노드스케줄 (Pod & Node Schedule) (0) | 2020.09.27 |
---|---|
파드와 서비스 연동 (Pod & Service) (0) | 2020.09.27 |
쿠버네티스 디플로이먼트 (Deployment) (0) | 2020.09.23 |
쿠버네티스 파드 (0) | 2020.09.22 |
쿠버네티스 네임스페이스 (0) | 2020.09.22 |
댓글